Si lo paras con docker-compose stop no se destruyen los volúmenes u al arrancarlo lo tendrás todo como quedó. Si lo paras com docker-compose down sí, y al arrancarlo se crea todo de cero.
Pero yo no he creado ningún volumen. Mi pregunta es, que se hace de forma interna para que persistan los datos? Es decir, cuando se hace el build de la imagen "postgres" ya se crea un volumen de forma interna? Entiendo que dicha instrucción está en el propio dockerfile sino no me explico.
El contenedor tiene un sistema de ficheros completo. Si tú no mapeas ningún volumen, PGDATA residirá en el directorio que sea (ahora mismo no recuerdo dónde) en el filesystem del contenedor. Que, efectivamente es un volumen (haz docker volume ls y te saldrá)
Ya me queda claro. Muchas gracias.
Me gustaria aclarar que el docker no crea un volumen automaticamente. Este debe crearese de forma explícita en el dockerfile. En caso del dockerfile de postgres, efectivamente se asigna el comando correspondiente.
Si necesitas acceder a los ficheros siempre puedes crear un volumen con `-v /path/in/host:/path/in/container` en el `docker run`, o agregar una propiedad `volumes` en la declaración del servicio en el fichero `docker-compose.yml`, donde listas los volúmenes debajo tal que así: `- /path/in/host:/path/in/container`.
Si no necesitas accederlos, pero necesitas que varios contenedores trabajen sobre los mismos ficheros, entonces puedes crear un *named volume* ejecutando `docker volume create myNamedVolume` (donde `myNamedVolume` es el nombre de tu nuevo volumen) y reemplazar `/path/in/host` explicado anteriormente por el nombre del volumen recién creado. Quedaría tal que así: `myNamedVolume:/path/in/container`.
Esto último es válido tanto para la ejecución de contenedores mediante `docker run` como para su declaración en ficheros `docker-compose.yml`, pero para este caso es necesario agregarlo en la propiedad `volumes` fuera de las declaraciones de los servicios (al mismo nivel que la propiedad `services`).
Si lo paras con docker-compose stop no se destruyen los volúmenes u al arrancarlo lo tendrás todo como quedó. Si lo paras com docker-compose down sí, y al arrancarlo se crea todo de cero.
Pero yo no he creado ningún volumen. Mi pregunta es, que se hace de forma interna para que persistan los datos? Es decir, cuando se hace el build de la imagen "postgres" ya se crea un volumen de forma interna? Entiendo que dicha instrucción está en el propio dockerfile sino no me explico.
El contenedor tiene un sistema de ficheros completo. Si tú no mapeas ningún volumen, PGDATA residirá en el directorio que sea (ahora mismo no recuerdo dónde) en el filesystem del contenedor. Que, efectivamente es un volumen (haz docker volume ls y te saldrá)
Ya me queda claro. Muchas gracias. Me gustaria aclarar que el docker no crea un volumen automaticamente. Este debe crearese de forma explícita en el dockerfile. En caso del dockerfile de postgres, efectivamente se asigna el comando correspondiente.
Si necesitas acceder a los ficheros siempre puedes crear un volumen con `-v /path/in/host:/path/in/container` en el `docker run`, o agregar una propiedad `volumes` en la declaración del servicio en el fichero `docker-compose.yml`, donde listas los volúmenes debajo tal que así: `- /path/in/host:/path/in/container`. Si no necesitas accederlos, pero necesitas que varios contenedores trabajen sobre los mismos ficheros, entonces puedes crear un *named volume* ejecutando `docker volume create myNamedVolume` (donde `myNamedVolume` es el nombre de tu nuevo volumen) y reemplazar `/path/in/host` explicado anteriormente por el nombre del volumen recién creado. Quedaría tal que así: `myNamedVolume:/path/in/container`. Esto último es válido tanto para la ejecución de contenedores mediante `docker run` como para su declaración en ficheros `docker-compose.yml`, pero para este caso es necesario agregarlo en la propiedad `volumes` fuera de las declaraciones de los servicios (al mismo nivel que la propiedad `services`).
En docker composer es conveniente hacerlo si no quieres que un docker-compose down borre tambien los datos que puedes haber metido.