Estou usando o Docker Toolbox no OSX.
Criei um contêiner de volume de dados para armazenar dados persistentes: https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container .
Verifiquei se esses dados estão realmente armazenados na VM boot2docker (criada por docker-machine) e não no contêiner, para que persistam. No entanto, "reinicialização do docker-machine" limpa esses dados personalizados no vm.
Não consigo encontrar documentação sobre o que está acontecendo. Encontrei uma postagem no fórum mencionando que os dados em /var/lib/docker serão preservados, mas não consegui encontrar nenhum documento oficial informando isso e também parece estranho, considerando que o guia de armazenamento persistente acima não usa esse caminho ou mesmo menciona isso seus dados serão excluídos.
Isso é esperado e, em caso afirmativo, existe alguma documentação oficial sobre o caminho correto para armazenar dados persistentes?
Edit: Adicionando exemplo de senario com falha
$ 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
Isso definitivamente deve funcionar:
Você pode elaborar mais sobre as etapas para reproduzir seu problema?
boot2docker tem um sistema de arquivos somente leitura (será apagado na reinicialização), com exceção de:
/var/lib/docker
/var/lib/boot2docker/profile
onde os sinalizadores do daemon podem ser ajustados)Eu não uso boot2docker, mas se /data for apagado na reinicialização, é onde seu volume está sendo armazenado (
docker run -v /data:/var/lib/mysql
), então ele será perdido.O que você está fazendo também é combinar dois padrões diferentes para lidar com persistência de volume. Para obter persistência, os contêineres podem montar volumes de um local especificado no sistema host (que se presume ser persistente) ou podem ser associados a um contêiner de dados e montados com
--volumes-from
. Parece que a abordagem do sistema de arquivos host não é apropriada para boot2docker e você deve usar o padrão de volume de dados (somente).Presumivelmente, você deve criar seu contêiner de dados com
-v /var/lib/mysql
, em vez de-v /data:/var/lib/mysql
.Observe que estou usando o docker para mac beta, que está usando o xhyve vm.
O conteúdo de /var/lib/boot2docker será mantido entre as reinicializações da máquina. Portanto, se você deseja que determinados arquivos estejam disponíveis em sua vm, coloque-os neste diretório.
Se você deseja que eles sejam acessíveis em um local diferente para executar contêineres docker, você pode adicionar o seguinte a /var/lib/boot2docker/profile:
Se você deseja adicionar outra configuração aos arquivos do sistema que persistirão entre as reinicializações da VM, como valores extras no arquivo hosts, você pode adicionar um comando como o abaixo para /var/lib/boot2docker/profile:
Espero que ajude