Visão geral
Podman (o gerenciador POD) é uma ferramenta open source usada para desenvolvimento, gerenciamento e execução de containers em sistemas Linux®. Desenvolvido originalmente pelos engenheiros Red Hat® junto com a comunidade open source, o Podman gerencia todo o ecossistema de containers usando a biblioteca libpod.
A arquitetura inclusiva e sem daemon do Podman é uma opção mais segura e acessível para o gerenciamento de containers. Além disso, suas ferramentas e funcionalidades, como Buildah e Skopeo, permitem que os desenvolvedores personalizem seus ambientes de container para adequá-los às suas necessidades.
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 meio de uma interface de linha de comando (CLI) simples e pela biblioteca libpod, que oferece APIs para gerenciar containers, pods, imagens de container e volumes. A CLI do Podman cria e dá suporte a containers Open Container Initiative, projetados para cumprir com os padrões do setor para formatos e ambientes de execução de containers, embora recursos de criação mais avançados estejam disponíveis no projeto complementar, o Buildah. Os usuários podem executar o Podman em várias distribuições do Linux, como Red Hat Enterprise Linux, Fedora, CentOs e Ubuntu.
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.
O que torna o Podman diferente de outros mecanismos de container?
O Podman se destaca de outros mecanismos de container porque é uma arquitetura sem daemon. Daemons são processos executados no plano de fundo do seu sistema para realizar o trabalho pesado de executar containers sem uma interface do 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 permite 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ço 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.
Os usuários podem gerenciar seus próprios repositórios no sistema, bem como as unidades do systemd, para controlar o início e o gerenciamento automático de seus próprios containers. Com os usuários podendo gerenciar seus próprios recursos e com seus containers sendo executados sem raiz, práticas não recomendadas são desencorajadas, como tornar o mundo de /var/lib/containers gravável ou outras práticas de gerenciamento de sistema que podem expor aplicações a outros problemas de segurança. 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. A sigla REST significa Representational State Transfer (Transferência Representacional de Estado, em português). API REST é uma interface de programação de aplicações 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.
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. Esta abordagem modular de conteinerização tem como resultado um ambiente flexível e lightweight, reduzindo a sobrecarga e isolando funcionalidades necessárias para alcançar seus objetivos. Ferramentas menores e mais modulares também podem evoluir mais rapidamente e cada ferramenta pode se concentrar em um único objetivo.
Podman, Buildah e Skopeo são como um conjunto de canivetes suíços especializados que, combinados, podem atender praticamente a todos os casos de uso de containers. O Podman é o maior desses canivetes.
Por padrão, o Podman e o Buildah usam runC, o ambiente de execução OCI, para iniciar containers. Você pode criar e executar uma imagem ou, com o runC, pode executar imagens com 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 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, o que permite personalizar de acordo com suas necessidades em aplicações nativas em nuvem.
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 PATH da aplicação do sistema, que aciona o Podman para os ambientes em que esse comando é necessário, facilitando a transição do Docker. A CLI do Podman é semelhante à plataforma de container do Docker, e os usuários que conhecem uma delas tem maior probabilidade de sucesso com a outra.
Alguns desenvolvedores usam o Podman e o Docker juntos, com o Docker sendo usado na fase de desenvolvimento e transferindo o programa ao Podman em ambientes de execução para aproveitar a maior segurança da plataforma.
O Podman é mais adequado para desenvolvedores que executam containers sem o Kubernetes ou o OpenShift Container Platform. CRI-O é uma plataforma de container open source e voltada para a comunidade para a orquestração de containers do Kubernetes, como Red Hat OpenShift® Container Platform.
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 a flexibilidade, a acessibilidade e a segurança avançada que muitas equipes de desenvolvimento buscam. O Podman ajuda você a:
- Gerenciar imagens de container e todo o ciclo de vida de containers, incluindo 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, aumentando a segurança e reduzindo 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 do 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 tem a solução
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 é o padrão para a execução de containers Linux em ambientes empresariais, além de permitir que os desenvolvedores girem containers, gerenciem a implantação e acelerem o desenvolvimento de novas aplicações facilmente. Com aplicações portáteis e containers criados no Red Hat Enterprise Linux na nuvem híbrida aberta, você se mantém ágil e cumpre com seus objetivos de transformação à medida que eles 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 painel do console web. Com o console web, você pode simplificar tarefas comuns, assim como em 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 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.