Red Hat Training

A Red Hat training course is available for RHEL 8

3.4. Compartilhamento de arquivos entre dois contêineres

Você pode usar volumes para persistir dados em recipientes, mesmo quando um recipiente é excluído. Os volumes podem ser usados para compartilhar dados entre vários recipientes. O volume é uma pasta que é armazenada na máquina host. O volume pode ser compartilhado entre o contêiner e o host.

As principais vantagens são:

  • Os volumes podem ser compartilhados entre os recipientes.
  • Os volumes são mais fáceis de fazer backup ou migrar.
  • Os volumes não aumentam o tamanho dos recipientes.

Procedimento

  1. Para criar um volume, entre:

    Volume do podman cria volume de host
  2. Para exibir informações sobre o volume, entre:

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

    Note que ele cria um volume no diretório de volumes. Você pode salvar o caminho do ponto de montagem para a variável para facilitar a manipulação: $ mntPoint=$(podman volume inspect hostvolume --format {{.Mountpoint}}).

    Note que se você executar sudo podman volume create hostvolume, então o ponto de montagem muda para /var/lib/containers/storage/volumes/hostvolume/_data.

  3. Criar um arquivo de texto dentro do diretório usando o caminho é armazenado na variável mntPoint:

    $ echo "Olá do anfitrião" >> $mntPoint/host.txt
  4. Liste todos os arquivos no diretório definido pela variável mntPoint:

    $ ls $mntPoint/
    host.txt
  5. Executar o container com o nome myubi1 e mapear o diretório definido pelo nome do volume hostvolume no host para o diretório /containervolume1 no container:

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

    Note que se você usar o caminho do volume definido pela variável mntPoint (-v $mntPoint:/containervolume1), os dados podem ser perdidos ao executar o comando podman volume prune, que remove os volumes não utilizados. Use sempre o comando -v hostvolume_name:/containervolume_name.

  6. Liste os arquivos no volume compartilhado no contêiner:

    # ls /containervolume1
    host.txt

    Você pode ver o arquivo host.txt que você criou no host.

  7. Criar um arquivo de texto dentro do diretório /containervolume1:

    # echo "Olá do recipiente 1 >> /containervolume1/container1.txt
  8. Desprenda-se do recipiente com CTRL p e CTRL q.
  9. Liste os arquivos no volume compartilhado no host, você deve ver dois arquivos:

    $ ls $mntPoint
    container1.rxt  host.txt

    Neste ponto, você está compartilhando arquivos entre o contêiner e o anfitrião. Para compartilhar arquivos entre dois contêineres, execute outro contêiner chamado myubi2. Os passos 10 - 13 são análogos aos passos 5 - 8.

  10. Executar o container com o nome myubi2 e mapear o diretório definido pelo nome do volume hostvolume no host para o diretório /containervolume2 no container:

    $ podman run -it --name myubi2 -v hostvolume:/containervolume2 registry.access.redhat.com/ubi8/ubi  /bin/bash
  11. Liste os arquivos no volume compartilhado no contêiner:

    # ls /containervolume2
    container1.txt host.txt

    Você pode ver o arquivo host.txt que você criou no host e container1.txt que você criou dentro do container myubi1.

  12. Criar um arquivo de texto dentro do diretório /containervolume2:

    # echo "Olá do recipiente 2 >> /containervolume2/container2.txt
  13. Desprenda-se do recipiente com CTRL p e CTRL q.
  14. Liste os arquivos no volume compartilhado no host, você deve ver três arquivos:

    $ ls $mntPoint
    container1.rxt  container2.txt host.txt
  15. Para parar e remover ambos os recipientes, entre:

    $ podman stop myubi1
    $ podman stop myubi2
    $ podman rm myubi1
    $ podman rm myubi2
  16. Para remover o volume do hospedeiro, entre:

    podman volume rm hostvolume
  17. Para verificar se você apagou o volume, entre:

    Volume ls de podman

Recursos adicionais

  • Para mais informações sobre o comando podman volume, digite man podman-volume.