Buscar..


Contenedores de solo datos

¡Los contenedores de solo datos están obsoletos y ahora se consideran un anti-patrón!

En los días de antaño, antes del subcomando de volume de Docker, y antes de que fuera posible crear volúmenes con nombre, Docker eliminaba los volúmenes cuando no había más referencias a ellos en ningún contenedor. Los contenedores de solo datos están obsoletos porque Docker ahora ofrece la capacidad de crear volúmenes con nombre, así como muchas más utilidades a través de varios subcomandos de docker volume ventana docker volume . Los contenedores de solo datos ahora se consideran un anti-patrón por esta razón.

Muchos recursos en la web de los últimos años mencionan el uso de un patrón llamado "contenedor de datos solamente", que es simplemente un contenedor de Docker que existe solo para mantener una referencia a un volumen de datos.

Recuerde que en este contexto, un "volumen de datos" es un volumen de Docker que no se monta desde el host. Para aclarar, un "volumen de datos" es un volumen que se crea con la directiva VOLUME Dockerfile, o usando el interruptor -v en la línea de comandos en un comando de docker run , específicamente con el formato -v /path/on/container . Por lo tanto, un "contenedor de solo datos" es un contenedor cuyo único propósito es tener un volumen de datos adjunto, que es usado por el --volumes-from en un comando de docker run de la --volumes-from docker run . Por ejemplo:

docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true

Cuando se ejecuta el comando anterior, se crea un "contenedor de solo datos". Es simplemente un contenedor vacío que tiene un volumen de datos adjunto. Entonces fue posible usar este volumen en otro contenedor así:

docker run -d --name="mysql" --volumes-from="mysql-data" mysql

El contenedor mysql ahora tiene el mismo volumen que también está en mysql-data .

Dado que Docker ahora proporciona el subcomando de volume y los volúmenes con nombre, este patrón ahora está obsoleto y no se recomienda.

Para comenzar con el subcomando de volume y los volúmenes con nombre, consulte Creación de un volumen con nombre

Creando un volumen de datos

docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql

Este comando crea un nuevo contenedor desde la imagen mysql . También crea un nuevo volumen de datos, que luego se monta en el contenedor en /var/lib/mysql . Este volumen ayuda a cualquier dato dentro de él a persistir más allá de la vida útil del contenedor. Es decir, cuando se elimina un contenedor, también se eliminan los cambios del sistema de archivos. Si una base de datos almacenaba datos en el contenedor y el contenedor se elimina, todos esos datos también se eliminan. Los volúmenes persistirán en una ubicación particular incluso más allá cuando se retire su contenedor.

Es posible usar el mismo volumen en varios contenedores con la --volumes-from línea de comandos --volumes-from :

docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql

El contenedor mysql-2 ahora tiene adjunto el volumen de datos de mysql-1 , también utilizando la ruta /var/lib/mysql .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow