Scenario / Questions
I’m using Docker Toolbox on OSX.
I’ve created a data volume container for storing persistent data: https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container.
I checked that this data is indeed stored on the boot2docker VM (created by docker-machine) and not on the container, so that it will persist.
However “docker-machine restart ” clears out this custom data on the vm.
I can’t find documentation on what is happening. I found one forum post mentioning that data in /var/lib/docker will be preserved, but I could not find any official docs stating that and it also seems strange considering the persistent storage guide above doesn’t use this path or even mention that your data will be deleted.
Is this expected and if so is there any official documentation on the correct path to store persistent data?
Edit: Adding example of failing senario
$ docker-machine ssh alt docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello" docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello" hello docker@alt:~$ exit $ docker-machine restart alt Starting VM... $ docker-machine ssh alt docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello" cat: can't open '/var/lib/mysql/hello': No such file or directory
Find below all possible solutions or suggestions for the above questions..
This definitely should work:
$ docker-machine ssh default docker@default:~$ docker run -v /data --name mydata busybox true docker@default:~$ docker run --volumes-from mydata busybox sh -c "echo hello >/data/hello" docker@default:~$ docker run --volumes-from mydata busybox cat /data/hello hello docker@default:~$ exit $ docker-machine restart default Starting VM... $ docker-machine ssh default docker@default:~$ docker run --volumes-from mydata busybox cat /data/hello hello
Can you elaborate more on the steps to reproduce your problem?
boot2docker has a read-only filesystem (will get wiped on reboot) with the exception of:
- Containers and their data (volumes) — this is what you read about
- Docker images
- Docker configuration (e.g.
/var/lib/boot2docker/profilewhere the daemon flags can be tweaked)
I don’t use boot2docker, but if /data gets wiped on reboot, that’s where your volume is being stored (
docker run -v /data:/var/lib/mysql), so it will be lost.
What you’re doing is also combining two different patterns for handling volume persistence. In order to get persistence, containers can mount volumes from a specified location on the host system (which is presumed to be persistent), or they can be associated with a data container, and mounted with
--volumes-from. It sounds like the host filesystem approach is not appropriate for boot2docker, and you should use the data volume pattern (only).
Presumably you should be creating your data container with
-v /var/lib/mysql, rather than
Note that I am using docker for mac beta which is using the xhyve vm.
The contents of /var/lib/boot2docker will be persisted between machine restarts.
So if you want certain files to be available on your vm put them in this directory.
If you want them to be accessible in a different location for running docker containers then you can add the following to /var/lib/boot2docker/profile:
mkdir -p /desired/path ln -s /var/lib/boot2docker/your.file /desire/path/your.file
If you want to add other configuration to system files that will persist between vm restarts such as extra values in your hosts file then you can add a command such as the one below to /var/lib/boot2docker/profile:
echo '127.0.0.1 your.domain.com' >> /etc/hosts
Hope it helps
Kubernetes Free Online Tutorial, Kubernetes Beginner Tutorial
DevOps Free Online Tutorial, DevOps Beginner Tutorial
Ansible Free Online Tutorial, Ansible Beginner Tutorial
Docker Free Online Tutorial, Docker Beginner Tutorial
Openstack Free Online Tutorial, Openstack Beginner Tutorial
Disclaimer: This has been sourced from a third party syndicated feed through internet. We are not responsibility or liability for its dependability, trustworthiness, reliability and data of the text. We reserves the sole right to alter, delete or remove (without notice) the content in its absolute discretion for any reason whatsoever.