In this blog post, we’ll see how to use different mount points on PMM Docker deployments (Percona Monitoring and Management). This is useful if you want to use other mount points for the different directories, or even if you want to use a custom path that is not bound to Docker’s volumes directory (which is /var/lib/docker/volumes/ by default) within the same mount point.
There are two ways in which you can achieve this:
docker create command to use different directoriesIn the following examples, /pmm/ is used as the new base directory. One can, of course, choose different directories for each if needed. Also, remember to be aware of any SELinux or AppArmor policies you may have in place.
For this, we need to follow these steps:
Let’s see this with some commands and outputs. In this example, we will use /pmm/ as if it were the new mount point:
|
1 |
shell> mkdir -p /pmm/opt/<br>shell> mkdir -p /pmm/opt/prometheus<br>shell> mkdir -p /pmm/var/lib/ |
|
1 |
shell> docker create <br> -v /opt/prometheus/data <br> -v /opt/consul-data <br> -v /var/lib/mysql <br> -v /var/lib/grafana <br> --name pmm-data <br> percona/pmm-server:1 /bin/true<br>4589cd1bf8ce365f8f62eab9f415eb14f1ce3a76b0123b7aad42e93385455303<br> |
|
1 |
shell> docker inspect pmm-data | egrep "Source|Destination"<br>"Source": "/var/lib/docker/volumes/a191331f6be1a177003ef2fdeee53f92fc190dc67b0c402ee7b47b4461ffa522/_data",<br>"Destination": "/opt/prometheus/data",<br>"Source": "/var/lib/docker/volumes/7208317edff4565f649df294cfb05fc1888e6ab817c18abc5f036c419e364d4b/_data",<br>"Destination": "/var/lib/grafana",<br>"Source": "/var/lib/docker/volumes/547b3f083a0a33b6cd75eb72e2cc25c383f5d4db2d8a493b25eb43499e2f5807/_data",<br>"Destination": "/var/lib/mysql",<br>"Source": "/var/lib/docker/volumes/7473ac5d2dac4440ac94fae2faf4a63af95baaabed4b14d9414f499ae9b5761d/_data",<br>"Destination": "/opt/consul-data",<br><br>shell> DOCKER_CONSUL_DATA="/var/lib/docker/volumes/7473ac5d2dac4440ac94fae2faf4a63af95baaabed4b14d9414f499ae9b5761d/_data"<br>shell> DOCKER_PROMETHEUS_DATA="/var/lib/docker/volumes/a191331f6be1a177003ef2fdeee53f92fc190dc67b0c402ee7b47b4461ffa522/_data"<br>shell> DOCKER_GRAFANA_DATA="/var/lib/docker/volumes/7208317edff4565f649df294cfb05fc1888e6ab817c18abc5f036c419e364d4b/_data"<br>shell> DOCKER_MYSQL_DATA="/var/lib/docker/volumes/547b3f083a0a33b6cd75eb72e2cc25c383f5d4db2d8a493b25eb43499e2f5807/_data"<br><br>shell> mv $DOCKER_CONSUL_DATA /pmm/opt/consul-data<br>shell> mv $DOCKER_PROMETHEUS_DATA /pmm/opt/prometheus/data<br>shell> mv $DOCKER_GRAFANA_DATA /pmm/var/lib/grafana<br>shell> mv $DOCKER_MYSQL_DATA /pmm/var/lib/mysql<br> |
|
1 |
shell> ln -s /pmm/opt/consul-data $DOCKER_CONSUL_DATA<br>shell> ln -s /pmm/opt/prometheus/data $DOCKER_PROMETHEUS_DATA<br>shell> ln -s /pmm/var/lib/grafana $DOCKER_GRAFANA_DATA<br>shell> ln -s /pmm/var/lib/mysql $DOCKER_MYSQL_DATA<br> |
After this, we can start the pmm-server container (see below).
Modifying the docker create command
For this, we need to follow these other steps:
-v arguments)
Let’s see this in practical terms again, assuming we want to use the /pmm/ mount point.
|
1 |
shell> mkdir -p /pmm/opt/<br>shell> mkdir -p /pmm/opt/prometheus<br>shell> mkdir -p /pmm/var/lib/ |
|
1 |
shell> docker create <br> -v /opt/prometheus/data <br> -v /opt/consul-data <br> -v /var/lib/mysql <br> -v /var/lib/grafana <br> --name pmm-data-temporary <br> percona/pmm-server:1 /bin/true<br>76249e1830c2a9c320466e41a454e9e80bf513e9b046e795ec41a33d75df5830 |
|
1 |
shell> docker cp pmm-data-temporary:/opt/prometheus/data /pmm/opt/prometheus/data<br>shell> docker cp pmm-data-temporary:/opt/consul-data /pmm/opt/consul-data<br>shell> docker cp pmm-data-temporary:/var/lib/mysql /pmm/var/lib/mysql<br>shell> docker cp pmm-data-temporary:/var/lib/grafana /pmm/var/lib/grafana<br><br>shell> docker rm -v pmm-data-temporary |
|
1 |
shell> docker create <br> -v /pmm/opt/prometheus/data:/opt/prometheus/data <br> -v /pmm/opt/consul-data:/opt/consul-data <br> -v /pmm/var/lib/mysql:/var/lib/mysql <br> -v /pmm/var/lib/grafana:/var/lib/grafana <br> --name pmm-data <br> percona/pmm-server:1 /bin/true<br>d4c10ae9fb2e38758df999268573f4a8cddb5b47389b349f55733d2e54815bf0 |
|
1 |
shell> docker run --rm --volumes-from pmm-data -it percona/pmm-server:1 chown -R pmm:pmm /opt/prometheus/data /opt/consul-data<br>shell> docker run --rm --volumes-from pmm-data -it percona/pmm-server:1 chown -R grafana:grafana /var/lib/grafana<br>shell> docker run --rm --volumes-from pmm-data -it percona/pmm-server:1 chown -R mysql:mysql /var/lib/mysql |
After this, we can start the pmm-server container (see below).
Running pmm-server container
After following either of the steps mentioned above, we can run the pmm-server container with the exact same commands as shown in the online documentation:
|
1 |
shell> docker run -d <br> -p 80:80 <br> --volumes-from pmm-data <br> --name pmm-server <br> --restart always <br> percona/pmm-server:1<br>0caa14f6fa22c419876de0dfb635535dbba41a2bd82b51b3d8a5be0b763fa6d2 |
And that’s it! Now you should have custom mount points on PMM docker deployment.
Resources
RELATED POSTS