Header Ads

O que é Podman e como ele difere do Docker?

Podman é um mecanismo de contêiner compatível com a especificação de contêineres OCI. O Podman faz parte do RedHat Linux, mas também pode ser instalado em outras distribuições.

Por ser compatível com OCI, o Podman pode ser usado como um substituto imediato para o mais conhecido tempo de execução do Docker. A maioria dos comandos do Docker podem ser traduzidos diretamente em comandos do Podman.

Aqui está uma olhada em como os dois tempos de execução se comparam.

O que é um tempo de execução?

Para muitas pessoas, um “ container ” ainda é um “ contêiner do Docker. ” Esta não é uma representação precisa do ecossistema de contêineres atual. O Docker produz imagens de contêiner OCI, que podem ser usadas com outros tempos de execução compatíveis. O Kubernetes é um exemplo, enquanto o Podman é outro.

Como consequência, o Podman e o Docker têm funcionalidades básicas sobrepostas. Ambos produzem imagens que o outro pode usar para executar contêineres. Os dois tempos de execução, então, adicionam suas próprias especialidades sobre os recursos básicos de contentorização.

Como instalar o Podman

Se você estiver usando RedHat Linux, Podman está no repositório de extras. Use o gerenciador de assinaturas para adicionar o repositório. Você poderá então usar o yum para instalar o Podman.

 su - gerenciador de assinaturas repos - habilita rhel-7-server-extras-beta-rpms yum -y instala podman 

A maioria das outras distribuições Linux populares também incluem Podman em seus repositórios padrão. Você pode instalar o podman, dnf install podman ou pacman -S podman para obtê-lo instalado.

Trabalhando com contêineres e imagens

A CLI do Podman está deliberadamente alinhada com os Docker. Isso significa que você pode usar comandos familiares do Docker para interagir com os contêineres do Podman:

 podman pull my-image: último podman run my-image: último --name my-container podman ps podman rm my-container 

O Podman deve ser imediatamente familiar para os usuários do Docker. Você poderia criar um alias para docker para podman e não notar a diferença no uso diário. Claro, nem todos os recursos estão disponíveis, embora — tentar usar os comandos Docker Swarm gerará um erro, já que o Podman não tem nada equivalente ao Swarm.

O que há de diferente no Podman?

Embora pareça semelhante ao Docker, o Podman tem algumas diferenças distintas. A primeira, e provavelmente a mais significativa, é sua arquitetura. O Podman é sem daemon — não há um processo duradouro gerenciando seus contêineres.

Quando você executa um comando podman, você faz uma nova interface diretamente com o processo que está iniciando seus contêineres e buscando suas imagens. A CLI do Docker depende de uma conexão com o daemon do Docker. A CLI envia comandos ao daemon, e o daemon atua sobre eles para criar contêineres.

O modelo do

Podman ajuda a resolver algumas das preocupações em torno da segurança do Docker. A falta de um daemon reduz consideravelmente a superfície de ataque do contêiner. Se você precisar de acesso remoto, o Podman expõe uma API REST que permite interagir com todos os tipos de recursos compatíveis.

Pods

O Podman vem com recursos exclusivos que o Docker carece totalmente. No Podman, os contêineres podem formar “ pods ” que operam juntos. É semelhante ao conceito do Kubernetes Pod.

Para criar um pod, use o comando pod create:

 podman pod criar --name my-pod 

Os contêineres são adicionados aos pods incluindo a sinalização --pod com a execução do podman:

 podman run --pod my-pod --name image-1 my-image: último podman run --pod my-pod --name image-2 another-image: mais recente 

Os contêineres no pod podem ser gerenciados de forma agregada usando os comandos do pod do podman:

 podman kill my-pod # Kill todos os containers podman restart my-pod # Reinicia todos os containers podman stop my-pod # Stop all containers 

O conceito de pod é poderoso, pois permite gerenciar vários contêineres de forma agregada. Você pode criar contêineres de aplicativos, como front-end, back-end e banco de dados, adicioná-los a um pod e gerenciá-los em uníssono.

O mais próximo que o Docker chega disso é com o Compose. O uso do Compose requer que você escreva um arquivo docker-compose. yml e use o binário docker-compose separado. O Podman permite criar pods usando um comando sem sair do terminal.

Quando você precisar exportar a definição de um Pod, o Podman produzirá um manifesto YAML compatível com o Kubernetes. Você pode pegar o manifesto e aplicá-lo diretamente a um cluster do Kubernetes. Isso reduz a lacuna entre executar um contêiner em desenvolvimento e lançá-lo na infraestrutura de produção.

 podman gerar kube 

Contêineres sem raiz

O Podman oferece suporte a contêineres sem raiz. Isso ajuda a bloquear sua segurança, evitando que os contêineres sejam executados como o usuário root do host. O Docker agora oferece suporte ao modo sem raiz como uma opção de configuração daemon. Podman tinha rootless antes do Docker e dá mais ênfase ao seu uso.

Primeiro, instale slirp4netns:

 yum install slirp4netns 

Em seguida, configure uma quantidade de namespaces de rede com escopo de usuário:

 echo "user. max_user_namespaces = 28633" > /etc/sysctl.d/userns. conf sysctl -p /etc/sysctl.d/userns. conf

Este comando permite o uso de namespaces de rede sem ser root.

Agora, você está pronto para executar um contêiner sem raiz! Conecte-se ao servidor como um usuário comum. Inicie um novo contêiner com podman run. Ele será criado com o UID de sua conta de usuário em vez de root.

Além de namespaces totalmente sem raiz, o podman tem como escopo o usuário atual por padrão. Suas imagens e contêineres são armazenados na pasta $ HOME do usuário. Ao executar podman ps ou imagens de podman, você verá apenas o seu conteúdo, em vez de todos os recursos do sistema.

Conclusão

O Podman é um tempo de execução de contêiner compatível com OCI que funciona sem um daemon. A CLI implementa todos os comandos principais do Docker. Você pode facilmente fazer a transição para o Podman ou usá-lo junto com uma instalação existente do Docker.

Ao contrário do Docker, o Podman oferece suporte de primeira classe para o gerenciamento de vários contêineres. O modelo Pod facilita o trabalho com uma pilha de serviços. Você pode parar, reiniciar e excluir todos os contêineres associados usando comandos em nível de pod.

O Podman também está pronto para ajudá-lo a dar o salto para os serviços de orquestração de contêineres. A capacidade de exportar YAML compatível com Kubernetes torna o Podman uma correspondência mais próxima a muitos ambientes de produção em contêineres. Desenvolvedores e operadores podem utilizar a mesma ferramenta para gerenciar seus contêineres, permitindo mais colaboração e flexibilidade.

Nenhum comentário