Red Hat substitui Docker por Podman

É claro que, atualmente, as paixões em torno da Red Hat têm um foco completamente diferente e muito global, mas ainda estamos falando sobre o nosso próprio local e aplicado a partir do mundo dos contêineres. Desde o início deste ano, a Red Hat vem trabalhando ativamente em um substituto para o Docker chamado Podman (ou libpod ). Por alguma razão, eles ainda não escreveram sobre esse projeto e agora é um bom momento para conhecê-lo, aprender sobre suas origens e pensar em perspectivas. Vamos lá!



CRI-O como uma história de fundo


Se você observar o mundo moderno dos contêineres Linux, é fácil ver que o tópico do artigo de hoje é apenas um dos estágios de uma estratégia de longo prazo da Red Hat. Uma confirmação vívida disso é o projeto CRI-O , que escrevemos cerca de um ano atrás. Em resumo, o CRI-O é uma implementação do Kubernetes CRI (Container Runtime Interface) para iniciar os tempos de execução do contêiner compatíveis com o padrão OCI (Open Container Initiative). Ainda mais curto, este é um substituto para o Docker como um tempo de execução do Kubernetes. (Uma iniciativa tecnicamente semelhante para K8s da Docker Inc é a cri-container , sobre a qual também escrevemos ; no mesmo artigo, há uma comparação do desempenho dessas duas soluções.)

A história do CRI-O é tal que, enquanto a OCI preparava padrões para contêineres ( especificação de tempo de execução e especificação de imagem ) [que, no entanto, também aconteceu com a participação da Red Hat] , um novo projeto chamado OCID foi criado e colocado na incubadora Kubernetes em RH ( Open Container Initiative Daemon), que mais tarde foi [solicitado pela OCI] renomeado como CRI-O. Seu objetivo era “a implementação de uma interface padrão para o ambiente de tempo de execução de contêineres no Kubernetes”, e a promoção nas “massas técnicas” foi realizada como parte de um projeto maior da Red Hat para criar um sistema operacional para contêineres - Projeto Atomic .


Bonés com o logotipo CRI-O no KubeCon + CloudNativeCon North America 2017

Nos últimos tempos, o CRI-O amadureceu para a versão 1.0 , recebeu suporte no Minikube e sua última conquista pode ser considerada a adoção da interface de contêiner padrão no projeto Kubic , que, principalmente, é desenvolvido pela comunidade competitiva (para Red Hat) Distribuição Linux - openSUSE.

Voltando ao tópico do artigo: Podman fazia parte originalmente do CRI-O.

A aparência e a essência de Podman


O anúncio oficial do projeto Podman (nome abreviado para "pod manager") ocorreu em fevereiro deste ano:

“Podman (anteriormente conhecido como kpod) existe desde o verão passado. Inicialmente, fazia parte do projeto CRI-O . Alocamos o podman para um projeto separado - libpod . Queríamos que Podman e CRI-O crescessem no seu próprio ritmo. Ambos funcionam muito bem individualmente (como utilitários independentes) e juntos. ”

Por esse motivo, o anúncio em si foi intitulado como " reintrodução" . E o primeiro lançamento público do Podman - v0.2 - ocorreu duas semanas antes deste anúncio. Então, qual é a essência do Podman?

O objetivo de Podman é fornecer uma interface de console para o lançamento de contêineres fora do sistema de orquestração. Vale ressaltar que os contêineres lançados podem ser combinados em grupos especiais com namespaces comuns, ou seja, pods - esse conceito já se tornou conhecido graças ao Kubernetes. O projeto segue a ideologia dos comandos UNIX, onde cada utilitário faz apenas uma coisa, mas é boa. Outro detalhe importante, que os desenvolvedores enfatizam incansavelmente, já foi citado acima no anúncio: Podman pode ser usado tanto com o CRI-O quanto de forma independente.

Em geral, a idéia principal do Podman é fornecer aos usuários do Kubernetes que escolhem o CRI-O como o tempo de execução do contêiner um análogo da interface do console da CLI do Docker (para interagir com contêineres e imagens em execução em clusters):

“O Podman implementa 38 dos 40 comandos da CLI do Docker definidos no Docker 1.13 (na época do anúncio em fevereiro - aprox. Transl. ), Mas alguns deles não foram repetidos especificamente. Por exemplo, relacionado ao Docker Swarm - em vez disso, para pods / containers que requerem orquestração, sugerimos o uso do Kubernetes. Além disso, alguns comandos para plug-ins do Docker, como plug-ins de volume e para a rede, não foram implementados. Uma lista completa dos comandos do Podman e seus equivalentes no Docker pode ser encontrada na página Transferência do uso do Podman . ”


Um fragmento da tabela de comparação para os comandos Docker e Podman: a maioria deles é a mesma, mas também há diferenças

No entanto, por trás dessa identidade visível na interface existe uma diferença fundamental na arquitetura: se a CLI do Docker se comunica com o daemon do Docker para executar comandos, o Podman é um utilitário independente que não requer daemons para seu trabalho.

Pelo menos por causa dessa diferença de arquitetura, será mais correto comparar o Podman não com o Docker como tal, mas com o crictl, um utilitário de console da cri-tools (é usado, em particular, para a integração do container com o Kubernetes). E existem diferenças funcionais: o Podman pode reiniciar contêineres parados e também fornece gerenciamento de imagens de contêineres. (Para uma comparação mais detalhada, consulte o blog do OpenShift .)

Com o lançamento do Fedora 28 Atomic Host (em maio), o Podman se tornou a ferramenta de gerenciamento de contêiner padrão para esta distribuição Linux. E apenas recentemente, em setembro, na conferência Linux All Systems Go! em Berlim, Dan Walsh, chefe da equipe de engenharia de contêineres da Red Hat, apresentou Podman a um público ainda mais amplo - uma gravação da performance pode ser vista aqui (mas apenas a apresentação aqui ).


Apresentação Podman na All Systems Go! 2018

Notas técnicas


A versão mais recente do Podman é a v0.10.1.3 (datada de 18 de outubro) e a mais recente com novos recursos é a v0.10.1 (12 de outubro), que incorporou várias novas equipes e sinalizadores adicionais.

O código Podman é escrito em Go e é distribuído sob a Apache License 2.0 gratuita. Pacotes prontos para instalação estão disponíveis para o Fedora versão 27 e posterior (também há um guia de instalação para o Ubuntu). Entre os componentes dependentes para o Podman funcionar, estão utilitários para contêineres Linux, como runc e conmon , além de plug-ins de rede CNI .

Tanto o início do contêiner com o Podman quanto o trabalho com ele são semelhantes ao cenário usual de uso da docker :

 $ sudo podman run -dt -e HTTPD_VAR_RUN=/var/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \ -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \ -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \ registry.fedoraproject.org/f27/httpd /usr/bin/run-httpd $ sudo podman ps ... $ sudo podman inspect -l ... $ sudo podman logs --latest 10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" $ sudo podman top <container_id> UID PID PPID C STIME TTY TIME CMD 0 31873 31863 0 09:21 ? 00:00:00 nginx: master process nginx -g daemon off; 101 31889 31873 0 09:21 ? 00:00:00 nginx: worker process 

Para uma introdução prática ao Podman, você também pode usar o script on-line Katacoda apropriado: " Contêineres sem Docker - iniciando contêineres usando Podman e Libpod ".

Por fim, o projeto pypodman , que está em desenvolvimento ativo e oferece uma interface Python para execução remota de comandos do Podman, merece menção especial.

Não apenas Podman: libpod e o ecossistema


Juntamente com Podman, o artigo mencionou repetidamente o projeto libpod. Qual a diferença?

Se falamos sobre o projeto "completo" do Red Hat, ele é chamado libpod e está hospedado no GitHub com esse nome. Hoje, a libpod está posicionada como "uma biblioteca para aplicativos que precisam trabalhar com o conceito de lareiras de contêineres, popularizado pelo Kubernetes". E o próprio Podman é um utilitário que faz parte da biblioteca libpod.

Se retornarmos a uma visão mais ampla dos contêineres, a Red Hat terá sua própria visão, que ganha vida com todo um conjunto de utilitários para todas as ocasiões. A maioria deles está concentrada em repositórios com o nome falado github.com/containers , e isso já mostra as ambições óbvias da empresa (a propósito, alguns desses projetos costumavam estar localizados em github.com/projectatomic ) .

As visões da Red Hat sobre a padronização e desenvolvimento do ecossistema de contêineres são articuladas diretamente no README do projeto libpod:



Já escrevemos sobre quase todos esses projetos (runc, containers / imagem, containers / armazenamento, CNI, conmon) na revisão do CRI-O , no entanto, uma adição importante desde então foi um utilitário para a construção de imagens de container chamado buildah . Além disso, a Red Hat já possui respostas prontas para outras necessidades do mundo moderno de contêineres, como o udica para gerar perfis de segurança SELinux e skopeo para trabalhar com registros remotos de imagens.

Resumindo


Assim como a Red Hat não está apenas por trás de sua plataforma corporativa para contêineres OpenShift, mas também participa ativamente da vida do projeto Open Source Kubernetes, a empresa americana está percebendo sua visão sobre a moderna infraestrutura de TI em um nível mais fundamental - os próprios contêineres, os engenheiros do DevOps e do SRE estão tão preocupados com a orquestração. Podman e libpod são componentes importantes de todo o ecossistema que a Red Hat está construindo no mundo dos contêineres de padrões abertos. Se você observar o que está acontecendo, o acordo com a IBM mencionado no início do artigo, apresentado como uma iniciativa para formar um fornecedor líder de soluções no campo de nuvens híbridas, parece ainda mais interessante em todo o setor ...

Por fim, proponho uma pequena pesquisa sobre o conhecimento dos leitores do Habra sobre o projeto Podman antes do surgimento deste artigo. Obrigado por participar!

PS


Leia também em nosso blog:

Source: https://habr.com/ru/post/pt426141/


All Articles