Red Hat Training

A Red Hat training course is available for RHEL 8

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

  1. Para crear un volumen, introduzca:

    $ podman volume create hostvolume
  2. Para mostrar información sobre el volumen, introduzca:

    $ podman volume inspect hostvolume
    [
        {
            "name": "hostvolume",
            "labels": {},
            "mountpoint": "/home/username/.local/share/containers/storage/volumes/hostvolume/_data",
            "driver": "local",
            "options": {},
            "scope": "local"
        }
    ]

    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.

  3. 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
  4. Lista todos los archivos en el directorio definido por la variable mntPoint:

    $ ls $mntPoint/
    host.txt
  5. Ejecute el contenedor llamado myubi1 y asigne el directorio definido por el nombre del volumen hostvolume en el host al directorio /containervolume1 en el contenedor:

    $ podman run -it --name myubi1 -v hostvolume:/containervolume1 registry.access.redhat.com/ubi8/ubi /bin/bash

    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 comando podman volume prune, que elimina los volúmenes no utilizados. Utilice siempre -v hostvolume_name:/containervolume_name.

  6. Enumera los archivos del volumen compartido en el contenedor:

    # ls /containervolume1
    host.txt

    Puedes ver el archivo host.txt que has creado en el host.

  7. Cree un archivo de texto dentro del directorio /containervolume1:

    # echo \ "Hola desde el contenedor 1" >> /contenedor1/contenedor1.txt
  8. Se separa del contenedor con CTRL p y CTRL q.
  9. Liste los archivos en el volumen compartido en el host, debería ver dos archivos:

    $ ls $mntPoint
    container1.rxt  host.txt

    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.

  10. Ejecute el contenedor llamado myubi2 y asigne el directorio definido por el nombre del volumen hostvolume en el host al directorio /containervolume2 en el contenedor:

    $ podman run -it --name myubi2 -v hostvolume:/containervolume2 registry.access.redhat.com/ubi8/ubi  /bin/bash
  11. Enumera los archivos del volumen compartido en el contenedor:

    # ls /containervolume2
    container1.txt host.txt

    Puede ver el archivo host.txt que creó en el host y container1.txt que creó dentro del contenedor myubi1.

  12. Cree un archivo de texto dentro del directorio /containervolume2:

    # echo \ "Hola desde el contenedor 2" >> /containervolume2/container2.txt
  13. Se separa del contenedor con CTRL p y CTRL q.
  14. Enumera los archivos en el volumen compartido en el host, deberías ver tres archivos:

    $ ls $mntPoint
    container1.rxt  container2.txt host.txt
  15. Para detener y eliminar ambos contenedores, introduzca:

    $ podman stop myubi1
    $ podman stop myubi2
    $ podman rm myubi1
    $ podman rm myubi2
  16. Para eliminar el volumen anfitrión, introduzca:

    $ podman volume rm hostvolume
  17. Para comprobar que has borrado el volumen, introduce:

    $ podman volume ls

Recursos adicionales

  • Para más información sobre el comando podman volume, escriba man podman-volume.