Visão geral
Podman (abreviação de gerenciador pod) é uma ferramenta open source usada para desenvolvimento, gerenciamento e execução de containers. Desenvolvido pelos engenheiros da Red Hat® junto com a comunidade open source, o Podman gerencia todo o ecossistema de containers usando a biblioteca libpod.
O Podman sem daemon e a arquitetura inclusiva o tornam uma opção acessível e com foco em segurança para gerenciamento de containers. Além disso, suas ferramentas e funcionalidades, como Buildah e Skopeo, permitem que os desenvolvedores personalizem seus ambientes de containers para se adequarem às suas necessidades. Os desenvolvedores também podem aproveitar o Podman Desktop, uma interface gráfica de usuário (GUI) para usar o Podman em ambientes locais.
Os usuários podem executar o Podman em várias distribuições do Linux®, como Red Hat Enterprise Linux, Fedora, CentOS e Ubuntu.
O que são pods?
Pods são grupos de containers que são executados juntos e compartilham os mesmos recursos, semelhantes aos pods do Kubernetes. O Podman gerencia esses pods por uma interface de linha de comando (CLI) simples e pela biblioteca libpod, que oferece interfaces de programação de aplicações (APIs) para gerenciar containers, pods, imagens de container e volumes. A CLI do Podman cria e dá suporte a containers da Open Container Initiative (OCI), projetados para cumprir com os padrões do setor para formatos e runtimes de containers. Mais recursos de criação avançados estão disponíveis no projeto relacionado, Buildah.
Cada pod é composto por um infracontainer e qualquer quantidade de containers regulares. O infracontainer mantém o pod em execução e os namespaces do usuário, que isolam containers do host. Cada um dos outros containers tem um monitor para acompanhar os processos e buscar containers mortos, ou seja, containers que não estão funcionando e que não podem ser removidos do ambiente porque alguns de seus recursos ainda estão sendo usados.
Recursos da Red Hat
O que torna o Podman diferente de outros mecanismos de container?
O Podman se destaca de outros mecanismos de container porque é sem daemon, o que significa que ele não conta com um processo com privilégios raiz (de superusuário) para executar containers.
Daemons são processos executados no plano de fundo do seu sistema para realizar o trabalho de executar containers sem uma interface de usuário. Eles são a comunicação intermediária entre o usuário e o próprio container.
Embora daemons possam ser convenientes para gerenciar seu ambiente de container, eles também podem apresentar vulnerabilidades de segurança. Muitos daemons são executados com privilégios raiz. Em sistemas Linux, a conta raiz atua como um superusuário com acesso administrativo (ao mesmo tempo em que ignora a necessidade de verificação de administrador) para ler arquivos, instalar programas, editar aplicações e muito mais. Isso torna os daemons o alvo ideal para hackers que querem controlar seus containers e se infiltrar no sistema de host.
O Podman remove o daemon e deixa que usuários regulares executem containers sem interagir com um daemon de propriedade raiz ou permite o uso de containers sem raiz. Sem raiz, os usuários podem criar, executar e gerenciar containers sem exigir processos com privilégios de administrador, tornando seu ambiente de containers mais acessível e reduzindo riscos de segurança. Além disso, o Podman inicia cada container com um rótulo de Security-Enhanced Linux (SELinux), dando aos administradores mais controle sobre quais recursos são disponibilizados para os processos de container.
Como o Podman gerencia containers?
Os usuários podem invocar o Podman a partir da linha de comando para extrair containers de um repositório e executá-los. A ferramenta aciona o ambiente de execução de containers configurado para criar o container em execução. Porém, sem um daemon dedicado, o Podman usa o systemd, um gerenciador de serviços e sistemas para sistemas operacionais Linux, para realizar atualizações e manter os containers em execução no plano de fundo. Ao integrar o systemd e o Podman, você gera unidades de controle para seus containers e as executa com o systemd habilitado automaticamente.
Usuários podem controlar o gerenciamento e o início automáticos de seus containers pelos seus próprios repositórios no sistema ou nas unidades systemd. Permitir que usuários gerenciem os próprios recursos e executem containers sem acesso raiz pode evitar a tentação de conceder permissões como de escrita em áreas do sistema que não deveriam ser alteradas. Isso também garante que cada usuário tenha conjuntos separados de containers e imagens e que ele possa usar o Podman de maneira simultânea no mesmo host sem um interferir no outro. Quando os usuários terminam seu trabalho, eles podem enviar as mudanças a um registro em comum para compartilhar a imagem com outras pessoas.
O Podman também implanta uma API RESTful (API REST) para gerenciar containers. REST significa representational state transfer (transferência representacional de estado, em português). API REST é uma API que está em conformidade com as restrições do estilo de arquitetura REST, permitindo a interação com serviços web RESTful. Com a API REST, você pode acionar o Podman a partir de plataformas como cURL, Postman, Advanced REST client do Google e muitas outras.
O que é o Podman Desktop?
O Podman Desktop é uma GUI para Podman, que oferece um lugar central para desenvolvedores trabalharem com containers em seus laptops ou estações de trabalho. Os desenvolvedores podem criar, extrair ou enviar imagens e gerenciar recursos usando diretamente uma GUI que é consistente entre ambientes locais de Linux, Windows e macOS. Além disso, ele também permite que desenvolvedores entreguem aplicações em containers prontas para implantação para ambientes Kubernetes.
O Podman Desktop dá suporte a pacotes de extensão, o que possibilita recursos adicionais. Um exemplo, o Podman AI Lab, adiciona receitas para criar aplicações que funcionem com large language models (LLMs) em um ambiente local e inclua um catálogo selecionado de LLMs licenciados open source. Um outro exemplo é o pacote de extensão da Red Hat para Podman Desktop, que ajuda os desenvolvedores a trabalharem com as tecnologias da Red Hat como o Red Hat OpenShift®.
Podman, Buildah e Skopeo
O Podman é um mecanismo de container modular, então deve trabalhar junto com ferramentas como Buildah e Skopeo para criar e mover seus containers. Com o Buildah, você cria containers do zero ou usando uma imagem como ponto de partida. O Skopeo move imagens de container entre diferentes tipos de sistemas de armazenamento, o que permite copiar imagens entre registros como docker.io, quay.io e seu registro interno, ou entre diferentes tipos de armazenamento no seu sistema local. Essa abordagem modular de conteinerização tem como resultado um ambiente flexível e lightweight, reduzindo custos indiretos e isolando funcionalidades necessárias. Trabalhar com containers possibilita o uso de ferramentas menores e mais modulares que podem se concentrar em um único propósito e serem atualizadas conforme desejado.
Podman, Buildah e Skopeo são como um conjunto de canivetes suíços especializados. Combinados, eles podem atender a quase todos os casos de uso de container. O Podman é o maior desses canivetes.
Por padrão, o Podman e o Buildah usam runC, o runtime de OCI, para iniciar containers. Você pode usar o runC para criar e executar uma imagem ou executar imagens com o formato docker. Esta ferramenta baseada em linguagem, Go, lê uma especificação do ambiente de execução, configura o kernel do Linux e, eventualmente, cria e inicia processos de container. Com algumas mudanças de configuração, você também pode usar o Podman com outros recursos, como crun.
Podman vs. Docker
Docker é uma tecnologia de conteinerização que permite criar e usar containers Linux. A principal diferença entre Podman e Docker é a arquitetura sem daemons do Podman. Os containers do Podman sempre foram sem raiz, enquanto o Docker acabou de adicionar um modo sem raiz à sua configuração de daemons. Docker é uma ferramenta completa para a criação e o gerenciamento de containers, enquanto o Podman e suas ferramentas associadas, como Buildah e Skopeo, são mais especializadas para aspectos específicos de conteinerização. Isso possibilita personalizar seus ambientes apenas com as ferramentas necessárias.
O Podman é uma alternativa potente ao Docker, mas os dois também podem trabalhar juntos. Os usuários podem facilmente alternar entre eles criando um alias entre o Docker e o Podman (alias docker=podman) e vice-versa. Além disso, um rpm chamado podman-docker pode deixar um comando "docker" no caminho da aplicação do sistema, que aciona o Podman para os ambientes onde esse comando é necessário, facilitando a transição do Docker. A CLI do Podman é semelhante à do Docker, então os usuários que conhecem uma delas têm maior probabilidade de sucesso com a outra.
Alguns desenvolvedores combinam o Podman e o Docker, com o Docker sendo usado na fase de desenvolvimento e transferindo o programa ao Podman em ambientes de runtime.
O Podman é mais adequado para desenvolvedores que executam containers sem o Kubernetes ou o Red Hat OpenShift Container Platform. Os desenvolvedores podem usar o mecanismo de containers impulsionado pela comunidade open source, o CRI-O, para a orquestração de container Kubernetes.
Por que usar o Podman?
O Podman alterou o cenário de containers oferecendo os mesmos recursos de alto desempenho que as principais plataformas de container, mas com flexibilidade, acessibilidade e funcionalidades de segurança que muitas equipes de desenvolvimento buscam. O Podman ajuda você a:
- Gerenciar imagens de container e todo o ciclo de vida de containers, incluindo containers de execução, redes, pontos de verificação e remoção.
- Executar e isolar recursos para pods e containers sem raiz.
- Dar suporte a imagens OCI e do Docker, bem como uma CLI compatível com o Docker.
- Criar um ambiente sem daemons, para melhorar a segurança e reduzir o consumo de recursos ociosos.
- Implantar uma API REST para dar suporte à funcionalidade avançada do Podman.
- Implementar a funcionalidade de ponto de verificação/restauração para containers Linux com ponto de verificação/restauração no espaço do usuário (CRIU). O CRIU pode congelar um container em execução e salvar os conteúdos e estados da memória em um disco. Dessa forma, cargas de trabalho em containers podem ser reiniciadas com mais rapidez.
- Atualize containers automaticamente. O Podman detecta se um container atualizado falhou na inicialização e volta automaticamente à última versão de trabalho. Isso oferece novos níveis de confiabilidade às aplicações.
A Red Hat pode ajudar
O Podman está incluso na subscrição do Red Hat Enterprise Linux. Dessa forma, você pode executar containers em conformidade com OCI criados usando uma imagem base universal (UBI) confiável, compatível e de confiança. O Red Hat Enterprise Linux é um padrão para executar containers Linux em ambientes empresariais. Ele permite que os desenvolvedores executem os containers, gerenciem a implantação e acelerem o desenvolvimento de novas aplicações. O upgrade da infraestrutura do Red Hat Enterprise Linux prepara você para aproveitar todos esses benefícios. Com aplicações portáteis e containers criados no Red Hat Enterprise Linux em ambientes de nuvem híbrida aberta, sua empresa se mantém ágil e continua se transformando conforme seus objetivos evoluem.
O console web do Red Hat Enterprise Linux simplifica a implantação e administração diária de seus sistemas com uma interface web fácil de usar. O Podman está disponível como um componente do console web para ajudar você a gerenciar containers e imagens. Monitore a quantidade de CPU e memória que seus containers usam acessando hosts e monitorando as cargas do sistema no dashboard do console web. O console web também permite que você simplifique tarefas comuns e operações complexas para otimizar o gerenciamento de containers.
Usando Ansible Playbooks, o Red Hat Ansible® Automation Platform permite automatizar as funções do Podman, como instalação, implantação de containers e outras tarefas que costumam consumir tempo e recursos.
O Podman, Podman Desktop e outras ferramentas de container baseadas em padrões abertos tornam o Red Hat Enterprise Linux um host de containers potente que entrega funcionalidades de suporte a nível de produção, estabilidade e segurança, bem como um caminho para o Kubernetes e o Red Hat OpenShift.
Blog da Red Hat
Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.