Podman (o POD MANager) é uma ferramenta para gerenciar contêineres e imagens, volumes montados nesses contêineres e pods feitos de grupos de contêineres. O Podman executa contêineres no Linux, mas também pode ser usado em sistemas Mac e Windows usando uma máquina virtual gerenciada pelo Podman. Podman é baseado em libpod, uma biblioteca para gerenciamento do ciclo de vida de contêineres que também está contida neste repositório. A biblioteca libpod fornece APIs para gerenciar contêineres, pods, imagens de contêineres e volumes.
Podman lança um novo lançamento principal ou secundário 4 vezes por ano, durante a segunda semana de fevereiro, maio, agosto e novembro. Os lançamentos de patches são mais frequentes e podem ocorrer a qualquer momento para fornecer correções de bugs aos usuários. Todos os lançamentos são assinados por PGP. As chaves públicas dos membros da equipe aprovados para fazer liberações estão localizadas aqui.
Integração Contínua:
GoDoc:
Transferências
Em alto nível, o escopo do Podman e do libpod é o seguinte:
Suporte para vários formatos de imagem de contêiner, incluindo imagens OCI e Docker.
Gerenciamento completo dessas imagens, incluindo extração de várias fontes (incluindo confiança e verificação), criação (criada via Containerfile ou Dockerfile ou confirmada a partir de um contêiner) e envio para registros e outros back-ends de armazenamento.
Gerenciamento completo do ciclo de vida do contêiner, incluindo criação (a partir de uma imagem e de um sistema de arquivos raiz explodido), execução, verificação e restauração (via CRIU) e remoção.
Gerenciamento completo da rede de containers, utilizando Netavark.
Suporte para pods, grupos de contêineres que compartilham recursos e são gerenciados em conjunto.
Suporte para execução de contêineres e pods sem root ou outros privilégios elevados.
Isolamento de recursos de contêineres e pods.
Suporte para uma interface CLI compatível com Docker, que pode executar contêineres localmente e em sistemas remotos.
Nenhum daemon de gerenciamento, para maior segurança e menor utilização de recursos em modo inativo.
Suporte para uma API REST que fornece uma interface compatível com Docker e uma interface aprimorada que expõe funcionalidades avançadas do Podman.
Suporte para execução em Windows e Mac por meio de máquinas virtuais executadas pela podman machine
.
Outras melhorias na podman machine
para melhor suporte ao Podman Desktop e outros casos de uso de desenvolvedores.
Suporte para conmon-rs, que melhorará o registro de contêineres.
Suporte para a API BuildKit.
Melhorias de desempenho e estabilidade.
Reduções no tamanho do binário Podman.
Se você acha que identificou um problema de segurança no projeto, NÃO relate o problema publicamente por meio do rastreador de problemas do GitHub, da lista de discussão ou do IRC. Em vez disso, envie um email com o máximo de detalhes possível para [email protected]
. Esta é uma lista de discussão privada para os principais mantenedores.
Para perguntas e discussões gerais, use os canais do Podman.
Para discussões sobre problemas/bugs e recursos, você pode usar o sistema de rastreamento de problemas e PRs do GitHub.
Há também uma lista de discussão em lists.podman.io
. Você pode se inscrever enviando uma mensagem para [email protected]
com o assunto subscribe
.
O Podman pode ser facilmente executado como um usuário normal, sem a necessidade de um binário setuid. Quando executados sem root, os contêineres Podman usam namespaces de usuário para definir root no contêiner para o usuário que executa o Podman. Rootless Podman executa contêineres bloqueados sem privilégios que o usuário que executa o contêiner não possui. Algumas dessas restrições podem ser suspensas (via --privileged
, por exemplo), mas os contêineres sem root nunca terão mais privilégios do que o usuário que os iniciou. Se você executar o Podman como seu usuário e montar em /etc/passwd
do host, você ainda não poderá alterá-lo, pois seu usuário não tem permissão para fazer isso.
Quase todas as funcionalidades normais do Podman estão disponíveis, embora existam algumas deficiências. Qualquer versão recente do Podman deve ser capaz de rodar sem root sem qualquer configuração adicional, embora seu sistema operacional possa exigir alguma configuração adicional detalhada no guia de instalação.
É necessária uma pequena configuração por um administrador antes que o Podman sem root possa ser usado. A configuração necessária está documentada aqui.
Podman Desktop fornece um ambiente de desenvolvimento local para Podman e Kubernetes em máquinas Linux, Windows e Mac. É um frontend de interface de usuário de desktop completo para Podman que usa o backend podman machine
em sistemas operacionais não Linux para executar contêineres. Ele oferece suporte ao gerenciamento completo do ciclo de vida do contêiner (construção, extração e envio de imagens, criação e gerenciamento de contêineres, criação e gerenciamento de pods e trabalho com Kubernetes YAML). O projeto se desenvolve no GitHub e contribuições são bem-vindas.
Assinatura especializada e envio de imagens para vários back-ends de armazenamento. Consulte Skopeo para essas tarefas.
Suporte para a interface Kubernetes CRI para gerenciamento de contêineres. O daemon CRI-O é especializado nisso.
Podman usa projetos OCI e as melhores bibliotecas para diferentes aspectos:
Tempo de execução: usamos as ferramentas de tempo de execução do OCI para gerar configurações de tempo de execução do OCI que podem ser usadas com qualquer tempo de execução compatível com OCI, como crun e runc.
Imagens: o gerenciamento de imagens usa a biblioteca de contêineres/imagens.
Armazenamento: o armazenamento de contêineres e imagens é gerenciado por contêineres/armazenamento.
Rede: Suporte de rede através do uso de Netavark e Aardvark. A rede sem raiz é gerenciada via pasta ou slirp4netns.
Compilações: As compilações são suportadas via Buildah.
Conmon: Conmon é uma ferramenta para monitorar tempos de execução OCI, usada tanto pelo Podman quanto pelo CRI-O.
Seccomp: Uma política Seccomp unificada para Podman, Buildah e CRI-O.
Para blogs, anúncios de lançamento e muito mais, confira o site podman.io!
Notas de instalação Informações sobre como instalar o Podman em seu ambiente.
Suporte a OCI Hooks Informações sobre como Podman configura OCI Hooks para execução ao iniciar um contêiner.
Documentação da API Podman sobre a API REST do Podman.
Comandos do Podman Uma lista dos comandos do Podman com links para suas páginas de manual e, em muitos casos, vídeos mostrando os comandos em uso.
Imagens de contêiner Podman Informações sobre as imagens de contêiner Podman encontradas em quay.io.
Guia de solução de problemas do Podman Uma lista de problemas e soluções comuns para o Podman.
Transferência de uso do Podman Informações úteis para transferência de operações e desenvolvimento no que se refere à infraestrutura que utiliza o Podman. Esta página inclui tabelas que mostram comandos do Docker e seus comandos equivalentes do Podman.
Tutoriais Tutoriais sobre como usar o Podman.
Cliente remoto Um breve tutorial sobre como usar o cliente remoto Podman.
Configuração básica e uso do Podman em um ambiente Rootless Um tutorial que mostra a configuração necessária para executar o Rootless Podman.
Notas de lançamento Notas de lançamento para versões recentes do Podman.
Contribuindo Informações sobre como contribuir para este projeto.
Buildah e Podman são dois projetos complementares de código aberto que estão disponíveis na maioria das plataformas Linux e ambos os projetos residem em GitHub.com com Buildah aqui e Podman aqui. Tanto Buildah quanto Podman são ferramentas de linha de comando que funcionam em imagens e contêineres da Open Container Initiative (OCI). Os dois projetos se diferenciam em sua especialização.
Buildah é especializada na construção de imagens OCI. Os comandos do Buildah replicam todos os comandos encontrados em um Dockerfile. Isso permite construir imagens com e sem Dockerfiles sem exigir nenhum privilégio de root. O objetivo final do Buildah é fornecer uma interface coreutils de nível inferior para construir imagens. A flexibilidade de construir imagens sem Dockerfiles permite a integração de outras linguagens de script no processo de construção. Buildah segue um modelo fork-exec simples e não funciona como um daemon, mas é baseado em uma API abrangente em golang, que pode ser vendida em outras ferramentas.
Podman é especializado em todos os comandos e funções que ajudam você a manter e modificar imagens OCI, como puxar e marcar. Ele também permite criar, executar e manter os contêineres criados a partir dessas imagens. Para construir imagens de contêiner via Dockerfiles, Podman usa a API golang do Buildah e pode ser instalado independentemente do Buildah.
Uma grande diferença entre Podman e Buildah é o conceito de contêiner. Podman permite aos usuários criar "contêineres tradicionais" onde a intenção desses contêineres é durar muito. Embora os contêineres Buildah sejam criados apenas para permitir que o conteúdo seja adicionado de volta à imagem do contêiner. Uma maneira fácil de pensar nisso é que o comando buildah run
emula o comando RUN em um Dockerfile enquanto o comando podman run
emula o comando docker run
em funcionalidade. Por causa disso e de suas diferenças de armazenamento subjacentes, você não pode ver os contêineres Podman no Buildah ou vice-versa.
Resumindo, o Buildah é uma maneira eficiente de criar imagens OCI, enquanto o Podman permite gerenciar e manter essas imagens e contêineres em um ambiente de produção usando comandos CLI de contêiner familiares. Para obter mais detalhes, consulte o Guia de ferramentas de contêiner.
$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob a6b3126f3807 done Copying config 25c667d086 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - / (O) (O) ~~~| -=(,Y,)=- | .---. /` |~~ ~/ o o ~~~~.----. ~~ | =(X)= |~ / (O (O) ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io