Estoy tratando de profundizar en mi comprensión del volumen de Docker y me está costando descubrir las diferencias / caso de uso de:
- El
docker volume createcomando - los
docker run -v /path:/host_path - La
VOLUMEentrada en elDockerfilearchivo
Particularmente, no entiendo qué sucede si combinas la VOLUMEentrada con la -vbandera.

Respuestas:
Un volumen es un dato persistente almacenado en
/var/lib/docker/volumes/...Puede declararlo en un Dockerfile, lo que significa que cada vez que se inicia un contenedor desde la imagen, el volumen se crea ( vacío ), incluso si no tiene ninguna
-vopción.Puede declararlo en tiempo de ejecución
docker run -v [host-dir:]container-dir.La combinación de los dos (
VOLUME+docker run -v) significa que puede montar el contenido de una carpeta de host en su volumen persistente por el contenedor en/var/lib/docker/volumes/...docker volume create crea un volumen sin tener que definir un Dockerfile y crear una imagen y ejecutar un contenedor. Se utiliza para permitir rápidamente que otros contenedores monten dicho volumen.
Si había persistido algún contenido en un volumen, pero desde entonces eliminó el contenedor (que por defecto no elimina su volumen asociado, a menos que esté usando docker rm -v), puede volver a adjuntar dicho volumen a un nuevo contenedor (declarando el mismo volumen).
Consulte " Docker: ¿cómo acceder a un volumen no adjunto a un contenedor? ".
Con la creación de volumen de Docker, es fácil volver a adjuntar un volumen con nombre a un contenedor.
fuente
DockerfileconVOLUMEy la-v /path:/host_path/bandera. El contenido deVOLUMEserá reemplazado por el contenido de/host_path/?docker volume create --name my_volumeseguida de adocker run --volume-from my_volume, ¿cómo sabes dónde estará el punto de montaje?docker run ..., ¿cómo puedo escribir en un archivo almacenado en elmy_volumevolumen? No conozco el ... camino? del volumen dentro de mi contenedor en ejecución porque no definí nada? Espero ser lo suficientemente claro, porque definitivamente no estoy seguro de mi vocabulario: - /docker volume create --name anamecrea un volumen con nombre : usted asigna una ruta de contenedor en tiempo de ejecucióndocker run -v aname:/apath:: ese contenedor ahora tiene un volumen adjunto, montado en su carpeta / apath. He reescrito la respuesta para que quede claro.VOLUMELa instrucción se vuelve interesante cuando la combina con elvolumes-fromparámetro de tiempo de ejecución.Dado el siguiente Dockerfile:
Construye una imagen con:
Y gira un recipiente con:
Lo primero que debe notar es que tendrá una carpeta en esta imagen llamada
myvolume. Pero no es particularmente interesante ya que al salir del contenedor también se eliminará el volumen.Cree un archivo vacío en esta carpeta, así que ejecute lo siguiente en el contenedor:
Ahora encienda un nuevo contenedor, pero comparta el mismo volumen con
my-first-bb:Verá que
my-second-bbcontiene el archivohello.txten lamyvolumecarpeta.Una vez que salga de ambos contenedores, su volumen también se eliminará.
fuente
--rmopción. Creo que podría funcionar mencionarlo. Si no inició un contenedor con--rm, aún puede eliminar el contenedor y sus volúmenes anónimos condocker rm -v my-container.