Podman (Portuguê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).
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.
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 podman
/etc/subuid
podman:165536:65536
/etc/subgid
podman:165536:65536
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
/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 acima 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