Por qué docker-machine borra los datos al reiniciar?

Estoy usando Docker Toolbox en OSX.

He creado un contenedor de volumen de datos para almacenar datos persistentes: https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container.

Verifiqué que estos datos se almacenan en la máquina virtual boot2docker (creada por docker-machine) y no en el contenedor, por lo que persistirán.Sin embargo, "docker-machine restart" borra estos datos personalizados en la máquina virtual.

No encuentro documentación de lo que está pasando. Encontré una publicación en el foro que menciona que los datos en /var / lib / docker se conservarán, pero no pude encontrar ningún documento oficial que lo indique y también parece extraño teniendo en cuenta que la guía de almacenamiento persistente anterior no usa esta ruta o incluso menciona que sus datos se eliminarán.

¿Se espera esto y, de ser así, existe documentación oficial sobre la ruta correcta para almacenar datos persistentes?


Editar: Agregar ejemplo de senario fallido

$ docker-machine ssh altdocker@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"hellodocker@alt:~$ exit$ docker-machine restart altStarting VM...$ docker-machine ssh altdocker@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

Esto definitivamente debería funcionar:

$ docker-machine ssh defaultdocker@default:~$ docker run -v /data --name mydata busybox truedocker@default:~$ docker run --volumes-from mydata busybox sh -c "echo hello >/data/hello"docker@default:~$ docker run --volumes-from mydata busybox cat /data/hellohellodocker@default:~$ exit$ docker-machine restart defaultStarting VM...$ docker-machine ssh defaultdocker@default:~$ docker run --volumes-from mydata busybox cat /data/hellohello

¿Puede dar más detalles sobre los pasos para reproducir su problema?

boot2docker tiene un sistema de archivos de solo lectura (se borrará al reiniciar) con la excepción de:

  1. Contenedores y sus datos (volúmenes) this esto es lo que lees /var/lib/docker
  2. Imágenes de Docker
  3. Configuración de Docker (p. ej. /var/lib/boot2docker/profile donde se pueden ajustar las banderas de daemon)

No uso boot2docker, pero si /data se borra al reiniciar, ahí es donde se almacena su volumen (docker run -v /data:/var/lib/mysql), por lo que se perderá.

Lo que está haciendo también es combinar dos patrones diferentes para manejar la persistencia del volumen. Para obtener persistencia, los contenedores pueden montar volúmenes desde una ubicación específica en el sistema host (que se presume que es persistente), o pueden asociarse con un contenedor de datos y montarse con --volumes-from. Parece que el enfoque del sistema de archivos host no es apropiado para boot2docker, y debe usar el patrón de volumen de datos (solo).

Presumiblemente, debería crear su contenedor de datos con -v /var/lib/mysql en lugar de -v /data:/var/lib/mysql.

Tenga en cuenta que estoy usando docker para Mac beta, que usa la máquina virtual xhyve.

El contenido de /var / lib / boot2docker se conservará entre máquinas restarts.So si desea que ciertos archivos estén disponibles en su máquina virtual, colóquelos en este directorio.

Si desea que sean accesibles en una ubicación diferente para ejecutar contenedores docker, puede agregar lo siguiente a /var / lib / boot2docker / profile:

mkdir -p /desired/pathln -s /var/lib/boot2docker/your.file /desire/path/your.file

Si desea agregar otra configuración a los archivos del sistema que persistirá entre reinicios de vm, como valores adicionales en su archivo de hosts, puede agregar un comando como el que se muestra a continuación a /var / lib / boot2docker / profile:

echo '127.0.0.1 your.domain.com' >> /etc/hosts

Espero que ayude