Como gerenciar contêineres usando Podman e Skopeo em Rhel 8

Como gerenciar contêineres usando Podman e Skopeo em Rhel 8

Um dos desafios que os desenvolvedores enfrentaram no passado é fazer com que os aplicativos sejam executados de maneira confiável em vários ambientes de computação. Muitas vezes, as aplicações não foram executadas como esperadas ou encontraram erros e falharam completamente. E é aí que o conceito de containers nasceu.

O que são imagens de contêiner?

Recipiente Imagens são arquivos estáticos que são enviados com código executável que é executado em um ambiente isolado. Uma imagem de contêiner compreende bibliotecas de sistemas, dependências e outras configurações de plataforma necessárias para o aplicativo para executar em diversos ambientes.

Red Hat Linux Fornece um conjunto de ferramentas úteis de contêineres que você pode aproveitar para trabalhar diretamente com contêineres Linux usando comandos requisitando o docker. Esses incluem:

  • Podman - Este é um motor de contêiner com daemon menos para correr e gerenciar OCI Recipientes no modo raiz ou sem raízes. Podman é similar a Docker e tem as mesmas opções de comando, exceto que Docker é um daemon. Você pode puxar, executar e gerenciar imagens de contêiner usando Podman da mesma maneira que você faria com Docker. Podman Vem com muitos recursos avançados, integra totalmente com sistemas, e oferece suporte para namespace de usuário, que inclui a execução de contêineres sem a necessidade de um usuário root.
  • Skopeo: Esta é uma ferramenta de linha de comando usada para copiar imagens de contêiner de um registro para outro. Você pode usar Skopeo Copiar imagens de e para um determinado host, bem como copiar imagens para outro registro ou ambiente de contêineres. Além de copiar imagens, você pode usá -las para inspecionar imagens de vários registros e usar assinaturas para criar e verificar imagens.
  • Buildah: Este é um conjunto de ferramentas de linha de comando usadas para criar e gerenciar o contêiner OCI imagens usando Docker arquivos.

Neste artigo, vamos nos concentrar no gerenciamento de contêineres usando Podman e Skopeo.

Pesquisando imagens de contêiner de um registro remoto

O PODMAN PARCA O comando permite pesquisar registros remotos selecionados para imagens de contêiner. A lista padrão de registros é definida no registros.conf arquivo localizado no /etc/recipientes/ diretório.

Os registros são definidos por 3 seções.

  • [Registos.procurar] - Esta seção especifica os registros padrão que Podman pode procurar imagens de contêiner. Ele procura a imagem solicitada no registro.acesso.chapéu vermelho.com, registro.chapéu vermelho.io, e Docker.io registros.
Registros padrão
  • [Registos.inseguro]- Esta seção especifica registros que não implementam a criptografia TLS I.e registros inseguros. Por padrão, nenhuma entrada é especificada.
Registros inseguros
  • [Registos.bloquear] - Isso bloqueia ou nega o acesso aos registros especificados do seu sistema local. Por padrão, nenhuma entrada é especificada.
Bloqueia os registros

Como regular (não raiz) Usuário executando o comando podman, você pode definir o seu próprio registros.conf Arquivo no seu diretório doméstico ($ Home/.Config/Containers/Registres.conf) para substituir as configurações em todo o sistema.

Regras ao especificar registros

Ao especificar os registros, lembre -se do seguinte:

  • Cada registro deve ser fechado por citações únicas.
  • Os registros podem ser especificados usando um nome de host ou endereço IP.
  • Se vários registros forem especificados, eles devem ser separados por vírgulas.
  • Se um registro usa uma porta fora do padrão - as portas TCP da porta 443 para Seguro e 80 para inseguro, - o número da porta deve ser especificado juntamente com o nome do registro e.g. registro.exemplo.com: 5566.

Para pesquisar um registro por uma imagem de contêiner usando a sintaxe:

# Podman Search Registry/Container_Image 

Por exemplo, para procurar um Redis imagem no registro.chapéu vermelho.io Registro, Invoque o comando:

# Podman Search Registry.chapéu vermelho.io/redis 
Registro de pesquisa para imagem de contêiner

Para procurar um Mariadb Exerção de imagem de contêiner.

# Podman Search Registry.chapéu vermelho.io/mariadb 
Pesquise imagem de contêiner mariadb

Para obter uma descrição elaborada de uma imagem de contêiner, use o --sem trunc opção antes do nome da imagem do contêiner dos resultados que você obtém. Por exemplo, tentaremos obter uma descrição detalhada da imagem do contêiner mariadb, como mostrado:

# Podman Search-Não trunc Registro.chapéu vermelho.io/rhel8/mariadb-103 
Lista Descrição da imagem do contêiner mariadb

Puxando imagens de contêiner

Puxar ou recuperar imagens de contêiner de um registro remoto exige que você primeiro se autentique antes de qualquer outra coisa. Por exemplo, para recuperar a imagem do contêiner mariadb, faça login no registro do redhat:

# podman login 

Forneça seu nome de usuário e senha e acerte 'DIGITAR'No seu teclado. Se tudo correr bem, você deve receber uma mensagem de confirmação de que o login no registro foi bem -sucedido.

O login conseguiu! 

Agora, você pode puxar a imagem usando a sintaxe mostrada:

# podman pull [:]/[/]: 

O refere -se ao host ou registro remoto que fornece um repositório de imagens de contêiner no TCP . O e a Especifique coletivamente uma imagem de contêiner com base no no registro. finalmente, o Opção Especifica a versão da imagem do contêiner. Se nenhum for especificado, a tag padrão - mais recente - será usada.

É sempre recomendável adicionar registros confiáveis, é aqueles que fornecem criptografia e não permitem que os usuários anônimos geram contas com nomes aleatórios.

Para puxar a imagem do mariadb, execute o comando:

# Podman Pull Registry.chapéu vermelho.io/rhel8/mariadb-103 
  • O - registro.chapéu vermelho.io
  • O - RHEL8
  • O - Mariadb
  • O - 103
Puxe a imagem de mariadb

Para imagens de contêiner subsequentes, não é necessário fazer login adicional, pois você já está autenticado. Para puxar um Redis imagem de contêiner, basta executar:

# Podman Pull Registry.chapéu vermelho.io/rhscl/redis-5-rhel7 
Puxe a imagem do recipiente Redis

Listando imagens de contêiner

Depois de terminar de puxar as imagens, você pode visualizar as imagens atualmente existentes em seu host executando o comando Podman Images.

# imagens podman 
Listar imagens de contêiner

Inspecionar imagens de contêiner

Antes de administrar um contêiner, é sempre uma boa ideia investigar a imagem e entender o que faz. O Podman inspecionar O comando imprime um mar de metadados sobre o contêiner, como o sistema operacional e arquitetura.

Para inspecionar uma imagem, execute o Podman inspecionar Comando seguido pelo ID da imagem ou repositório.

# Podman Inspecione o ID da imagem ou # PODMAN Repositório 

No exemplo abaixo, estamos inspecionando o Mariadb recipiente.

# podman inspecionar registro.chapéu vermelho.io/rhel8/mariadb-103 
Inspecionando imagens de contêiner mariadb

Para puxar metadados específicos para um recipiente, passe o --formatar Opção seguida pelos metadados e pela identidade do contêiner (ID da imagem ou nome).

No exemplo abaixo, estamos recuperando informações sobre a arquitetura e a descrição do recipiente da base RHEL 8, que se enquadra sob o 'Rótulos' seção.

# podman inspecionar - -format = '.Rótulos.Arquitetura 'ID da imagem # podman inspecionar - -format =' .Rótulos.Descrição 'ID da imagem 
Obtenha informações sobre a arquitetura de contêineres

Para inspecionar uma imagem remota de outro registro, use o Skopeo Inspecione comando. No exemplo abaixo, estamos inspecionando uma imagem RHEL 8 init hospedada em Docker.

# Skopeo Inspecione Docker: // Registro.chapéu vermelho.IO/RHEL8-BETA/RHEL-INIT 
Inspecione a imagem remota do Docker Registry

Imagens de contêiner de marcação

Como você deve ter notado, os nomes de imagens geralmente são de natureza genérica. Por exemplo, a imagem Redis é rotulada:

registro.chapéu vermelho.io/rhscl/redis-5-rhel7 

As imagens de marcação lhes dão um nome mais intuitivo para entender melhor o que elas contêm. Usando o Podman Tag Comando, você pode criar uma tag de imagem que é essencialmente um alias para um nome de imagem que compreende diferentes partes.

Estes são:

Registro/nome de usuário/nome: tag 

Por exemplo, para alterar o nome genérico da imagem Redis, que tem um id de 646F2730318C , Vamos executar o comando:

# Podman Tag 646F2730318C Myredis 

Para adicionar uma etiqueta no final, anexa um cólon completo seguido pelo número da tag:

# Podman Tag 646F2730318C Myredis: 5.0 

Sem adicionar o número da tag, ele será atribuído apenas ao atributo mais recente.

Defina o nome da imagem de contêiner Redis

Executando imagens de contêiner

Para executar um contêiner, use o Podman Run comando. Por exemplo:

# podman run image_id 

Para executar um recipiente silenciosamente em segundo plano como um serviço de daemon, use o -d opção como mostrado.

# podman run -d image_id 

Por exemplo, para executar o Redis imagem com id 646F2730318C, Vamos invocar o comando:

# podman run -d 646f2730318c 
Execute imagens de contêiner Redis

Se você estiver executando um contêiner com base em um sistema operacional, como RHEL 8 imagem base, você pode obter acesso ao shell usando o -isto diretivo. O -eu a opção cria uma sessão interativa enquanto a -t gerar uma sessão de terminal. O --nome Opção define o nome do contêiner para mybash enquanto é o ECBC6F53BBA0 ID da imagem da imagem base.

# podman run --it - -name = mybash ecbc6f53bba0 

Depois disso, você pode executar quaisquer comandos de shell. No exemplo abaixo, estamos verificando a versão do sistema operacional da imagem do contêiner.

# gato /etc /os liberação 
Verifique a versão do OS da imagem do contêiner

Para sair do contêiner, basta invocar o comando de saída.

# saída 

Depois que o contêiner é excitado, ele interrompe automaticamente. Para iniciar o contêiner novamente, use o Podman Start comando com o -ai bandeira como mostrado.

# podman start -ai mybash 

Mais uma vez, isso lhe dá acesso ao shell.

Iniciar imagens de contêiner

Listando imagens em execução de contêineres

Para listar os contêineres em execução atualmente, use o Podman PS comando como mostrado.

# Podman PS 
Liste imagens em execução de contêineres

Para visualizar todos os contêineres, incluindo aqueles que saíram após a execução, use o comando:

# podman ps -a 
Veja todas as imagens de contêiner

Configurar imagens de contêiner para iniciar automaticamente no serviço Systemd

Nesta seção, nos concentramos em como um contêiner pode ser configurado para executar diretamente em um sistema RHEL como um serviço Systemd.

Primeiro, obtenha sua imagem preferida. Nesse caso, nós puxamos o Redis Imagem do Docker Hub:

# Podman Pull Docker.io/redis 

Se você tem o Selinux em execução em seu sistema, precisa ativar o CONTENTER_MANAGE_CGROUP booleano para executar recipientes com Systemd.

# SetSeBool -P Container_manage_cgroup em 

Depois disso, execute a imagem do contêiner em segundo plano e atribua -a ao seu nome de imagem preferido. Neste exemplo, nomeamos nossa imagem Redis_server e mapeou a porta 6379 do recipiente para o nosso RHEL 8 hospedar

# podman run -d - -name redis_server -p 6379: 6379 redis 
Execute a imagem do contêiner em fundo

Em seguida, vamos criar um Systemd arquivo de configuração da unidade para redis no /etc/Systemd/System/ diretório.

# vim/etc/Systemd/System/Redis-container.serviço 

Cole o conteúdo abaixo no arquivo.

[Unidade] Descrição = RECORTE REDIS [Service] reiniciar = sempre execstart =/usr/bin/podman start -a redis_server execstop =/usr/bin/podman stop -t 2 redis_server [install] wanted = local local.alvo 

Salvar e sair do arquivo.

Em seguida, configure o contêiner para iniciar automaticamente na inicialização.

# SystemCtl Ativar Redis-container.serviço 

Em seguida, inicie o contêiner e verifique seu status de execução.

# SystemCtl Start Redis-container.Serviço # Systemctl Status Redis-container.serviço 
Verifique o status da imagem do contêiner

Configurar armazenamento persistente para imagens de contêiner

Ao executar recipientes, é prudente configurar o armazenamento externo persistente no host. Isso fornece um backup caso o contêiner trava ou seja removido acidentalmente.

Para persistir os dados, vamos mapear um diretório localizado no host em um diretório dentro do contêiner.

$ podman run --privileged -it -v/var/lib/containers/backup_storage:/mnt registro.chapéu vermelho.io/ubi8/ubi/bin/bash 

O --privilegiado a opção é passada quando Selinux está definido para fazer cumprir. O -v a opção especifica o volume externo localizado no host. O volume do contêiner aqui é o /mnt diretório.

Depois de acessarmos o shell, vamos criar um arquivo de amostra teste.TXT no /mnt diretório como mostrado.

$ eco "Este teste de armazenamento externo persistente"> /mnt /testes.TXT 

Nós iremos então saída o contêiner e verifique se o arquivo existe no armazenamento externo que reside no host

# saída # cat/var/lib/contêineres/backup_storage/teste.TXT 

SaídaIsso testa o armazenamento externo persistente.

Configurar armazenamento persistente para contêineres

Parando e removendo recipientes

Depois de terminar com a execução do seu contêiner, você pode pará -lo usando o Podman pare comando seguido pelo Contêiner-id que você pode obter do Podman PS comando.

# Podman Stop Container-Id 
Pare a imagem do contêiner

Para remover os recipientes de que você não precisa mais, primeiro, verifique se você o interrompe e depois invocar o Podman RM Comando seguido pelo ID ou nome do contêiner como uma opção.

# podman rm contêiner-id 

Para remover vários contêineres em um comando GO em um, especifique o contêiner ids separado por um espaço.

# podman rm contêiner-id-1 contêiner-id-2 contêiner-id-3 
Remova a imagem do contêiner

Para limpar todos os seus contêineres, execute o comando:

# podman rm -a 
Limpe todos os recipientes

Removendo uma imagem

Para remover uma imagem, primeiro, verifique se todos os recipientes gerados das imagens são interrompidos e removidos conforme discutido no sub-tópico anterior.

Em seguida, prossiga e corra o podman -rmi Comando seguido pelo ID da imagem como mostrado:

# podman -rmi imagem -id 
Remova a imagem

Conclusão

Isso encerra este capítulo sobre como gerenciar e trabalhar com contêineres em RHEL 8. Esperamos que este guia tenha fornecido um entendimento decente dos recipientes e como você pode interagir e gerenciá -los em seu RHEL sistema usando Podman e Skopeo.