Como gerenciar contêineres usando Podman e Skopeo em Rhel 8
- 2434
- 759
- Howard Fritsch
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.
- [Registos.inseguro]- Esta seção especifica registros que não implementam a criptografia TLS I.e registros inseguros. Por padrão, nenhuma entrada é especificada.
- [Registos.bloquear] - Isso bloqueia ou nega o acesso aos registros especificados do seu sistema local. Por padrão, nenhuma entrada é especificada.
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/redisRegistro 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/mariadbPesquise 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-103Lista 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
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-rhel7Puxe 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 podmanListar 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-103Inspecionando 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 imagemObtenha 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-INITInspecione 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 RedisExecutando 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 646f2730318cExecute 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çãoVerifique 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êinerListando imagens em execução de contêineres
Para listar os contêineres em execução atualmente, use o Podman PS comando como mostrado.
# Podman PSListe 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 -aVeja 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 redisExecute 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çoVerifique 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ída ⇒ Isso testa o armazenamento externo persistente.
Configurar armazenamento persistente para contêineresParando 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-IdPare 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-3Remova a imagem do contêiner
Para limpar todos os seus contêineres, execute o comando:
# podman rm -aLimpe 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 -idRemova 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.
- « 20 coisas para fazer depois de instalar o Ubuntu 20.10 'gorila groovy'
- Como instalar oh-my-zsh no Ubuntu 20.04 »