Podman (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Podman. Data da última tradução: 2021-02-14. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Podman é uma alternativa ao Docker, fornecendo uma interface similar.

Instalação

Instale o pacote podman. Além disso, se você deseja criar imagens de contêiner, consulte Buildah.

Ao contrário do Docker, o Podman não requer um daemon, mas existe um que fornece uma API para serviços como o cockpit via cockpit-podman.

Por padrão, só é possível executar contêineres do Podman como root. Consulte Podman sem root para configurar contêineres em execução sem ser o usuário root.

Configuração

Arquivos de configuração para configurar como os contêineres se comportam estão localizados em /etc/containers. Para configurar a interface da ponte de rede usada pelo Podman, consulte /etc/cni/net.d/87-podman-bridge.conflist

Podman sem root

Por padrão somente root pode rodar contêineres (ou namespaces no kernelspeak).

Nota: No linux-hardened kernel.unprivileged_userns_clone é definido para 0 (mas podman sem root precisa dele configurado para 1). Use sysctl ou um parâmetro do kernel para configurar isso.

Para permitir operações sem root de contêineres Podman, primeiro determine que usuário(s) e grupo(s) você quer usar para os contêineres, e adicione as entradas correspondentes para /etc/subuid e /etc/subgid respectivamente.

This article or section needs expansion.

Reason: usermod's --add-subuids and --add-subgids options will not work if the /etc/subuid and /etc/subgid files do not exist. (Discuss in Talk:Podman (Português))

O seguinte exemplo habilita o usuário e grupo podman a rodar contêineres Podman (ou outros tipos de contêineres nesse caso). Alocando os UIDs e GIDs do 165536 a 169631 para o usuário e grupo podman respectivamente. Para isso, você pode editar os arquivos diretamente ou usar usermod(8). Veja subuid(5) e subgid(5) para mais informação.

# usermod --add-subuids 165536-231072 --add-subgids 165536-231072 username
/etc/subuid
username:165536:65536
/etc/subgid
username:165536:65536
Nota: Muitas imagens precisam de 65536 uids / gids para mapeamento (particularmente a base busybox e imagens alpine). É recomendado que você reserve ao menos essa quantidade de uids / gids para cada usuário para maximilizar a compatibilidade com o docker.

Podman sem root usa processo de pausa para manter namespaces do usuário rodando. Isto previne qualquer mudança aos arquivos /etc/subuid e /etc/subgid de serem propagados para os contêineres sem root enquanto o processo de pausa está rodando. Para estas mudanças serem propagadas é necessário executar:

$ podman system migrate

Depois disso, o usuário/grupo podman pode iniciar e executar contêineres podman.

Imagens

Nota: Você pode omitir o prefixo do registro das imagens, já que o Podman irá automaticamente buscar pela imagem em todos os registros definidos em /etc/containers/registries.conf no registries.search na ordem definida. As seguintes imagens irão conter o prefixo, para permitir configurações sem docker.io na configuração.

Arch Linux

O comando a seguir obtém a imagem x86_64 do Arch Linux do Docker Hub. Esta é uma versão simplificada do núcleo do Arch sem rede, etc.

# podman pull docker.io/archlinux

Veja também README.md.

Para uma base completa do Arch, clone o repositório do link abaixo e compile sua própria imagem.

$ git clone https://gitlab.archlinux.org/archlinux/archlinux-docker.git

Certifique-se que o pacote devtools esteja instalado.

Edite o arquivo packages de forma que ele contenha 'base'. Então, execute:

# make rootfs
# podman build -t archlinux .

Alpine Linux

Alpine Linux é uma escolha popular para imagens de contêineres pequenos, especialmente para software compilado como binários estáticos. O comando a seguir obtém a imagem mais recente do Alpine Linux em Docker Hub:

# podman pull docker.io/alpine

O Alpine Linux usa a implementação libc musl libc em vez da implementação libc glibc usada pela maioria das distribuições Linux. Como o Arch Linux usa glibc, existem várias diferenças funcionais entre um host do Arch Linux e um contêiner Alpine Linux que podem afetar o desempenho e a correção do software. Uma lista dessas diferenças está documentada aqui.

Observe que o software vinculado dinamicamente e compilado no Arch Linux (ou em qualquer outro sistema que use glibc) pode ter bugs e problemas de desempenho quando executado no Alpine Linux (ou em qualquer outro sistema usando uma libc diferente). Consulte [1], [2] e [3] para exemplos.

CentOS

O comando a seguir baixa a imagem mais recente do CentOs do Docker Hub:

# podman pull docker.io/centos

Consulte a página do Docker Hub para obter uma lista completa das tags disponíveis para cada versão do CentOS.

Debian

O comando a seguir baixa a imagem mais recente do Debian do Docker Hub:

# podman pull docker.io/debian

Consulte a página do Docker Hub para obter uma lista completa das tags disponíveis, incluindo ambas versões padrão e slim para cada lançamento do Debian.

Resolução de problemas

Contêineres são terminados no logout do shell

Pode acontecer de quando você deslogar da máquina contêineres do Podman serem parados. Para prevenir isso, a persistência de processos do usuário deve ser habilitada para os contêineres executados por ele:

$ loginctl enable-linger

Você pode também criar units de usuário do systemd como descrito: https://docs.podman.io/en/latest/markdown/podman-auto-update.1.html#examples

Veja também