Montaje del directory local en la ruta del contenedor Docker que no está expuesta como un VOLUMEN

¿Hay alguna diferencia entre:

  1. Montar un directory de host en una ruta de contenedor (la ruta no está expuesta como un volumen), por ejemplo:

docker run -v /host/directory:/container/directory my_image command_to_run

Dockerfile of my_image no incluye VOLUME ["/container/directory"]

  1. Montar un directory de host en una ruta de contenedor expuesta como un volumen:

docker run -v /host/directory:/container/directory my_image command_to_run

Dockerfile of my_image incluye VOLUME ["/container/directory"]

Sé que los datos del volumen persisten independientemente del ciclo de vida del contenedor. Sin embargo, dado que quiero trabajar con mis datos locales desde un contenedor, ¿hace alguna diferencia si el punto de assembly dentro del contenedor es un volumen?

No hay diferencia si monta la ruta desde el host al contenedor. El sistema de files del host se montará en la parte superior de ese directory dentro del contenedor.

La diferencia entre enumerar el volumen y no includelo dentro de la image es el comportamiento de Docker cuando crea una image sin especificar un volumen. Cuando el volumen esté definido en la image, la window acoplable creará un volumen "anónimo" que se puede ver con el docker volume ls como una cadena larga de uuid. Estos volúmenes rara vez son útiles, por lo que recomiendo no definir un volumen en la image y, en su lugar, definirlos únicamente en el command de docker run docker-compose.yml o docker-compose.yml definición de docker-compose.yml .

Las desventajas de definir un volumen en la image incluyen:

  1. Es posible que las líneas posteriores en Dockerfile o en Dockerfile descendiente no puedan cambiar el contenido en esta location. El comportamiento de Docker con esto varía según el escenario y la versión, por lo que, para pnetworkingecir, una vez que se define un volumen en una image, considero ese directory fuera de los límites.

  2. La creación de volúmenes anónimos es difícil de usar y es probable que desordere el sistema de files.

Publiqué un blog sobre este tema hace un time si está interesado en get más información.