Pregunta Docker: ¿Cómo se sincroniza la carpeta de host con la carpeta de contenedor?


Estoy trabajando en un sitio web con Nodo. Así que he creado un archivo Docker simple que agrega los archivos de mi sitio al FS del contenedor, instala el nodo y ejecuta la aplicación cuando ejecuto el contenedor, exponiendo el puerto privado 80.

Pero si quiero cambiar un archivo para esa aplicación, reconstruyo la imagen del contenedor y la vuelvo a ejecutar. Eso toma algunos segundos.

¿Existe una manera fácil de tener algún tipo de "sincronización en vivo", como NFS, para que los archivos de la aplicación de mi sistema host estén sincronizados con los del contenedor en ejecución?

De esta forma, solo tengo que volver a ejecutarlo para que se apliquen los cambios, o incluso mejor, si utilizo algo así como supervisor, se hará automáticamente.


32
2017-09-18 17:06


origen


Respuestas:


Puede usar volúmenes para hacer esto. Tienes dos opciones:

  1. Docker manejó volúmenes:

    docker run -v /src/path nodejsapp
    docker run -i -t -volumes-from <container id> bash
    

El archivo que edite en el segundo contenedor actualizará el primero.

  1. Volumen del directorio de host:

    docker run -v `pwd`/host/src/path:/container/src/path nodejsapp
    

Los cambios que realice en el host actualizarán el contenedor.


37
2017-09-18 18:56



Si está en OSX, ese tipo de compartimiento de volumen puede volverse muy lento, especialmente con aplicaciones basadas en nodo (muchos archivos). Para este pupose, http://docker-sync.io puede ayudarle a tener un volumen compartido como la sincronización, sin usar el volumen compartido, esto generalmente acelera la velocidad de lectura / escritura del contenedor del directorio de códigos de 50 a 80 veces, dependiendo de qué docker-machine use.

Para el rendimiento, vea https://github.com/EugenMayer/docker-sync/wiki/4.-Performance y para ejemplos fáciles de cómo usarlo, vea las repeticiones https://github.com/EugenMayer/docker-sync-boilerplate para su caso, el ejemplo de Unison https://github.com/EugenMayer/docker-sync-boilerplate/tree/master/unison es el que necesitarías para sincronizar como NFS


1
2017-08-11 07:28