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 .
Eu verifiquei se esses dados estão realmente armazenados na VM boot2docker (criada pela docker-machine) e não no contêiner, para que eles persistam. No entanto, o "docker-machine restart" limpa esses dados personalizados na vm.
Não consigo encontrar documentação sobre o que está acontecendo. Eu encontrei uma postagem no fórum mencionando que os dados em / var / lib / docker serão preservados, mas não consegui encontrar documentos oficiais afirmando isso e também parece estranho, considerando que o guia de armazenamento persistente acima não usa esse caminho ou até menciona que seus dados serão excluídos.
Isso é esperado e, se houver, existe alguma documentação oficial sobre o caminho correto para armazenar dados persistentes?
Edit: Adicionando exemplo de falha no 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
Eu não uso o boot2docker, mas se / data for apagado na reinicialização, é onde o seu volume está sendo armazenado (
docker run -v /data:/var/lib/mysql
), para que seja perdido.O que você está fazendo também está combinando dois padrões diferentes para lidar com a persistência de volume. Para obter persistência, os contêineres podem montar volumes a partir de um local especificado no sistema host (que presume-se persistente) ou podem ser associados a um contêiner de dados e montados
--volumes-from
. Parece que a abordagem do sistema de arquivos host não é apropriada para o boot2docker e você deve usar o padrão de volume de dados (apenas).Presumivelmente, você deve criar seu contêiner de dados em
-v /var/lib/mysql
vez de-v /data:/var/lib/mysql
.fonte
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 certos arquivos estejam disponíveis no seu vm, coloque-os neste diretório.
Se você quiser que eles estejam acessíveis em um local diferente para executar contêineres de docker, adicione 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, adicione um comando como o abaixo a / var / lib / boot2docker / profile:
Espero que ajude
fonte