Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 1. Começando com recipientes

Os recipientes Linux surgiram como uma tecnologia chave de embalagem e entrega de aplicações de código aberto, combinando o isolamento de aplicações leves com a flexibilidade dos métodos de implementação baseados em imagem.

O Red Hat Enterprise Linux implementa recipientes Linux usando tecnologias centrais como:

  • Grupos de controle (cgroups) para gestão de recursos
  • Namespaces para isolamento do processo
  • SELinux para segurança
  • Multitenancy seguro

para reduzir o potencial de explorações de segurança. Tudo isso para proporcionar um ambiente para a produção e funcionamento de contêineres de qualidade empresarial.

Red Hat OpenShift fornece ferramentas poderosas de linha de comando e Web UI para construir, gerenciar e executar containers em unidades referidas como pods. Entretanto, há momentos em que você pode querer construir e gerenciar containers individuais e imagens de containers fora do OpenShift. As ferramentas fornecidas para executar essas tarefas que rodam diretamente nos sistemas RHEL são descritas neste guia.

Ao contrário de outras implementações de ferramentas de contêineres, as ferramentas aqui descritas não se concentram em torno do motor monolítico de contêineres Docker e do comando docker. Em vez disso, fornecemos um conjunto de ferramentas de linha de comando que podem operar sem um motor de contêineres. Estas incluem:

  • podman - Para gerenciar diretamente pods e imagens de containers (correr, parar, iniciar, ps, anexar, executar e assim por diante)
  • buildah - Para construir, empurrar e assinar imagens de contêineres
  • skopeo - Para copiar, inspecionar, apagar e assinar imagens
  • runc - Para fornecer recursos de funcionamento e construção de containers para podman e buildah

Como estas ferramentas são compatíveis com a Open Container Initiative (OCI), elas podem ser usadas para gerenciar os mesmos recipientes Linux que são produzidos e gerenciados pela Docker e outros motores de recipientes compatíveis com a OCI. Entretanto, elas são especialmente adequadas para rodar diretamente no Red Hat Enterprise Linux, em casos de uso de um único nó.

Para uma plataforma de contêineres multi-nó, veja OpenShift. Em vez de confiar nas ferramentas de nó único, sem daemon descritas neste documento, o OpenShift requer um motor de contêineres baseado em daemon. Consulte Utilizando o motor de contêineres CRI-O para obter detalhes.

1.1. Containers sem Docker

O Red Hat não removeu apenas o motor de contêiner Docker do OpenShift. Também removeu o motor de contêineres Docker, juntamente com o comando docker, do Red Hat Enterprise Linux 8 por completo. Para a RHEL 8, o Docker não está incluído e não é suportado pela Red Hat (embora ainda esteja disponível em outras fontes).

A remoção do Docker reflete uma mudança na maneira de pensar da Red Hat sobre como os contêineres são manuseados:

  • Na empresa, o foco não está em executar recipientes individuais a partir da linha de comando. O principal local para a execução de containers é uma plataforma baseada em Kubernetes, como o OpenShift.
  • Ao reposicionar o OpenShift como a plataforma para operar containers, motores de containers como Docker se tornam apenas mais um componente abstraído pelo OpenShift.
  • Como o motor de contêineres no OpenShift não é para ser usado diretamente, ele pode ser implementado com um conjunto limitado de recursos que se concentra em fazer tudo o que o OpenShift precisa, sem ter que implementar muitos recursos autônomos.

Embora o Docker tenha saído do RHEL 8 e o motor de contêineres do OpenShift esteja desconectado do uso de um único nó, as pessoas ainda querem usar comandos para trabalhar com contêineres e imagens manualmente. Assim, a Red Hat se preparou para criar um conjunto de ferramentas para implementar a maior parte do que o comando docker faz.

Ferramentas como podman, skopeo, e buildah foram desenvolvidas para assumir esses recursos de comando docker. Cada ferramenta neste cenário pode ser mais leve e focada em um subconjunto de características. E sem a necessidade de um processo de daemon funcionando para implementar um motor de contêineres, estas ferramentas podem funcionar sem a sobrecarga de ter que trabalhar com um processo de daemon.

Se você ainda quiser usar o Docker no RHEL 8, você pode obter o Docker de diferentes projetos upstream, mas ele não tem suporte no RHEL 8. Como tantos recursos de linha de comando docker foram implementados exatamente em podman, você pode configurar um pseudônimo para que digitando docker faça com que o podman seja executado.

A instalação do pacote podman-docker configura tal pseudônimo. Assim, toda vez que você executar uma linha de comando docker, ela realmente roda podman para você.