3.4. Compartir archivos entre dos contenedores
Se pueden utilizar volúmenes para persistir los datos en los contenedores incluso cuando se elimina un contenedor. Los volúmenes pueden utilizarse para compartir datos entre varios contenedores. El volumen es una carpeta que se almacena en la máquina anfitriona. El volumen puede ser compartido entre el contenedor y el host.
Las principales ventajas son:
- Los volúmenes pueden ser compartidos entre los contenedores.
- Los volúmenes son más fáciles de respaldar o migrar.
- Los volúmenes no aumentan el tamaño de los contenedores.
Procedimiento
Para crear un volumen, introduzca:
podman volume create hostvolume
$ podman volume create hostvolumeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para mostrar información sobre el volumen, introduzca:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Observa que crea un volumen en el directorio de volúmenes. Puede guardar la ruta del punto de montaje en la variable para facilitar su manipulación:
$ mntPoint=$(podman volume inspect hostvolume --format {{.Mountpoint}}).Observe que si ejecuta
sudo podman volume create hostvolume, el punto de montaje cambia a/var/lib/containers/storage/volumes/hostvolume/_data.Crear un archivo de texto dentro del directorio utilizando la ruta se almacena en la variable
mntPoint:echo \ "Hola desde el host" >> $mntPoint/host.txt
$ echo \ "Hola desde el host" >> $mntPoint/host.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Lista todos los archivos en el directorio definido por la variable
mntPoint:ls $mntPoint/ host.txt
$ ls $mntPoint/ host.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ejecute el contenedor llamado
myubi1y asigne el directorio definido por el nombre del volumenhostvolumeen el host al directorio/containervolume1en el contenedor:podman run -it --name myubi1 -v hostvolume:/containervolume1 registry.access.redhat.com/ubi8/ubi /bin/bash
$ podman run -it --name myubi1 -v hostvolume:/containervolume1 registry.access.redhat.com/ubi8/ubi /bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow Tenga en cuenta que si utiliza la ruta del volumen definida por la variable
mntPoint(-v $mntPoint:/containervolume1), se pueden perder datos al ejecutar el comandopodman volume prune, que elimina los volúmenes no utilizados. Utilice siempre-v hostvolume_name:/containervolume_name.Enumera los archivos del volumen compartido en el contenedor:
ls /containervolume1 host.txt
# ls /containervolume1 host.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Puedes ver el archivo
host.txtque has creado en el host.Cree un archivo de texto dentro del directorio
/containervolume1:echo \ "Hola desde el contenedor 1" >> /contenedor1/contenedor1.txt
# echo \ "Hola desde el contenedor 1" >> /contenedor1/contenedor1.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Se separa del contenedor con
CTRL pyCTRL q. Liste los archivos en el volumen compartido en el host, debería ver dos archivos:
ls $mntPoint container1.rxt host.txt
$ ls $mntPoint container1.rxt host.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow En este punto, estás compartiendo archivos entre el contenedor y el host. Para compartir archivos entre dos contenedores, ejecute otro contenedor llamado
myubi2. Los pasos 10 - 13 son análogos a los pasos 5 - 8.Ejecute el contenedor llamado
myubi2y asigne el directorio definido por el nombre del volumenhostvolumeen el host al directorio/containervolume2en el contenedor:podman run -it --name myubi2 -v hostvolume:/containervolume2 registry.access.redhat.com/ubi8/ubi /bin/bash
$ podman run -it --name myubi2 -v hostvolume:/containervolume2 registry.access.redhat.com/ubi8/ubi /bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow Enumera los archivos del volumen compartido en el contenedor:
ls /containervolume2 container1.txt host.txt
# ls /containervolume2 container1.txt host.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Puede ver el archivo
host.txtque creó en el host ycontainer1.txtque creó dentro del contenedormyubi1.Cree un archivo de texto dentro del directorio
/containervolume2:echo \ "Hola desde el contenedor 2" >> /containervolume2/container2.txt
# echo \ "Hola desde el contenedor 2" >> /containervolume2/container2.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Se separa del contenedor con
CTRL pyCTRL q. Enumera los archivos en el volumen compartido en el host, deberías ver tres archivos:
ls $mntPoint container1.rxt container2.txt host.txt
$ ls $mntPoint container1.rxt container2.txt host.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para detener y eliminar ambos contenedores, introduzca:
podman stop myubi1 podman stop myubi2 podman rm myubi1 podman rm myubi2
$ podman stop myubi1 $ podman stop myubi2 $ podman rm myubi1 $ podman rm myubi2Copy to Clipboard Copied! Toggle word wrap Toggle overflow Para eliminar el volumen anfitrión, introduzca:
podman volume rm hostvolume
$ podman volume rm hostvolumeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para comprobar que has borrado el volumen, introduce:
podman volume ls
$ podman volume lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Recursos adicionales
-
Para más información sobre el comando
podman volume, escribaman podman-volume.