Introducción
Docker permite a los usuarios ejecutar varias aplicaciones aisladas de la computadora host, sin la necesidad de tener sistemas operativos separados para que se ejecuten. En su lugar, instala y administra contenedores Docker con un motor de contenedores (demonio Docker), que tiene una función similar a la del hipervisor para máquinas virtuales.
A medida que comience a usar Docker, se enfrentará a situaciones en las que necesitará saber cómo compartir datos entre contenedores.
Requisitos previos
- Un usuario con privilegios sudo
- Acceso a una terminal/línea de comando
- Una versión estable de Docker
Paso 1:crear un contenedor con volumen de datos
Para demostrar cómo compartir entre dos contenedores, debe crear un contenedor (Container1 ) con volumen de datos (datavolume1 ) luego puedes compartir.
1. Primero, cree un volumen independiente que compartirá entre dos contenedores Docker:
docker volume create --name DataVolume1
2. Luego, cree un contenedor Docker y asígnele el nombre Container1 con volumen de datos adjunto ejecutando el siguiente comando:
docker run -ti --name=Container1 -v DataVolume1:/datavolume1 ubuntu
2. A continuación, cree un archivo en el volumen de datos y agréguele texto:
echo "Share this file between containers" > /datavolume1/Example.txt
3. Salga del contenedor con el comando:exit
Paso 2:Cree un nuevo contenedor y agréguelo al volumen de datos
A continuación, cree un nuevo contenedor (Container2 ) que compartirá archivos con Container1 .
1. Crear Contenedor2 y monte los volúmenes desde Container1 :
docker run -ti --name=Container2 --volumes-from Container1 ubuntu
2. Agregue texto desde Container2 para mostrar que ambos contenedores pueden escribir en DataVolume1 :
echo "This will also appear in DataVolume1" >> /datavolume1/Example.txt
3. Para salir del Contenedor2 usa el comando:exit
Paso 3:Verifique que puede compartir datos entre contenedores Docker
1. Reinicie Contenedor1 para comprobar los cambios en el volumen de datos:
docker restart Container1
2. Confirme que ambos contenedores pueden leer y escribir en el mismo volumen de datos y que el texto que escribió en Container2 aparece en DataVolume1 :
cat /datavolume1/Example.txt
Si el texto se agregó con éxito al volumen de datos, la salida debería mostrar lo siguiente:
Share this file between containers
This will also appear in DataVolume1
3. Para terminar, sal del contenedor con el comando:exit
Opcional:crear volúmenes de solo lectura
La creación de un contenedor Docker de "solo lectura" evita que otros realicen cambios en los datos, permitiéndoles solo ver los archivos.
Añadir :ro
al nombre del contenedor que debe compartirse pero no modificarse.
En el siguiente ejemplo, Contenedor2 podrá ver archivos de Container1 pero no podrá editarlos.
docker run -ti --name=Container2 --volumes-from Container1:ro ubuntu
Para comprobar si Container2 tiene privilegios de solo lectura, intente eliminar el archivo de ejemplo de Container1 ejecutando el comando:
rm /datavolume1/Example.txt
El resultado debería mostrar que ha creado correctamente un archivo de solo lectura. En consecuencia, otros contenedores pueden acceder y ver los datos, pero no pueden realizar ninguna contribución ni modificarlos.