Gerenciamento de contêineres com curso de podman Crash | Andrei Balint | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Gerenciamento de contêineres com curso de podman Crash

teacher avatar Andrei Balint

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      INTRODUÇÃO DO CURSO

      1:42

    • 2.

      Contêineres explicados

      5:51

    • 3.

      Registros de contêineres

      4:14

    • 4.

      Como gerenciar contêineres

      8:04

    • 5.

      Como gerenciar imagens

      4:58

    • 6.

      Armazenamento persistente

      5:04

    • 7.

      Vinculação de portas

      4:18

    • 8.

      Rede de contêineres

      4:09

    • 9.

      Como criar imagens

      4:09

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

37

Estudantes

--

Projeto

Sobre este curso

O Podman é uma plataforma para desenvolvedores e administradores de sistemas criarem, enviarem e executarem aplicativos distribuídos, seja em laptops, VMs de data center ou na nuvem.

Este curso introduz o Podman a um iniciante absoluto usando palestras muito simples e fáceis de entender. As palestras são seguidas por demonstrações mostrando como configurar e começar com o Podman.

Este curso ajudará você a configurar seu próprio ambiente de laboratório pessoal em que você pode praticar todo o conhecimento aprendido aqui.

No final do curso, você terá uma compreensão sólida dos contêineres são, quais são os benefícios da containerização e como gerenciar contêineres usando a ferramenta Gerenciamento de contêineres do Podman.

Com o conhecimento adquirido aqui, você será capaz de configurar seus próprios serviços em contêineres em nenhum momento e tornar acessível mesmo a partir do exterior do seu próprio host.

Durante este curso, você vai:

  • Aprenda sobre a arquitetura de contêiner e seus benefícios

  • Mergulhe em registros de contêineres, o que eles são e como configurar o Podman para usar determinados registros

  • Execute e gerencie contêineres usando o Podman

  • Puxe e gerencie imagens de contêineres usando o Podman

  • Aloque armazenamento persistente em contêineres

  • Aprenda a mapear portas para tornar seus contêineres acessíveis de fora

  • Crie e gerencie a rede de contêineres no Podman

  • Crie suas próprias imagens de contêiner através do DockerFiles e usando a construção de Podman

O Podman P.S é muito semelhante ao Docker então todas as aulas neste curso podem ser tão úteis com o Docker quanto são com o Podman

Conheça seu professor

Teacher Profile Image

Andrei Balint

Professor
Level: Beginner

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. INTRODUÇÃO DO CURSO: Olá e bem-vindo ao curso de gerenciamento de contêineres com Pac-Man. Meu nome é Andre balance e estou aqui para ajudá-lo a aprender os benefícios da conteinerização e também como criar e gerenciar contêineres usando a ferramenta de gerenciamento de contêineres Pokémon, gostaria de especificar o board man é extremamente parecido com o Docker. O ganho de conhecimento aqui também pode ser usado ao trabalhar com o Docker. Agora vamos começar o curso falando um pouco sobre mim. Sou engenheiro certificado pela Red Hat e também especialista em trabalhar com contêineres e Kubernetes Minha segunda área de especialização é a InfoSec. Também sou certificado pela CompTIA Security Plus 35 milhas para CISOs. Então, agora que você sabe um pouco sobre mim, veja o que abordaremos neste curso. Vamos fazer uma breve visão geral do que devemos abordar durante este curso. Aprenderemos sobre contêineres, sua arquitetura, em seus benefícios depois, que abordaremos áreas mais práticas. E discutiremos os registros de contêineres. Eles são e como configurá-los no pod man. Em seguida, vamos nos aprofundar no gerenciamento de contêineres, onde veremos como criar serviços em contêineres. Agora podemos gerenciar bem os contêineres, se também pudermos gerenciar imagens. Então é isso que faremos no próximo módulo. Os contêineres têm, por padrão, armazenamento efêmero. Portanto, se quisermos que nossas alterações persistam além da morte de um contêiner, precisamos entender como alocar o armazenamento de persistência para os contêineres. E abordaremos isso no quinto módulo. No sexto módulo sete, vamos nos concentrar em Rede de Contêineres, onde aprenderemos sobre vinculação de portas e criação de rede. Como hoje, concluiremos este curso aprendendo como criar nossas próprias imagens de contêiner por meio do uso de arquivos Docker e diretórios de trabalho. Agora que temos uma boa visão geral do que abordaremos, vamos começar. 2. Contêineres explicados: Agora, com nosso primeiro módulo, falaremos um pouco sobre contêineres, o que são e os benefícios da conteinerização. Concluiremos este módulo configurando um ambiente de laboratório onde podemos executar todos os nossos exercícios práticos para os próximos módulos. Então, sem mais delongas, vamos começar. Agora vamos ver um pouco como os contêineres funcionam. Agora, os aplicativos de software dependem das bibliotecas do sistema, arquivos de configuração ou dos serviços oferecidos pelo ambiente de tempo de execução. Além disso, o ambiente de tempo de execução de um aplicativo de software é instalado em um sistema operacional que é executado em um host físico ou em uma máquina virtual, os administradores instalam o aplicativo dependências na parte superior desse sistema operacional. A principal desvantagem aplicativos de software implantados tradicionais é que essas dependências estão emaranhadas com o ambiente de tempo de execução. Um aplicativo pode exigir versões mais antigas ou mais recentes de um software de suporte e do software fornecido pelo sistema operacional. É aí que entram os contêineres. O contêiner é um conjunto de um ou mais processos isolados do resto do sistema. Pense nisso como um contêiner de transporte físico. O contêiner de transporte é uma forma padrão de empacotar e enviar. Ele é rotulado como carregado, descarregado e transportado de um local para outro dentro de uma única caixa. conteúdo dos recipientes é isolado do conteúdo de outros recipientes, para que eles não afetem um ao outro. Então, eles estão isolados e funcionam de forma independente. Então, quais são as características de um contêiner? Bem, eles são executados diretamente no sistema operacional host e compartilham esses recursos com todos os contêineres nesse sistema. Eles compartilharam o kernel do host. O kernel isola os processos do aplicativo do resto do sistema. Eles exigem muito menos recursos do que as máquinas virtuais, por isso são mais rápidos de iniciar e implantar. E eles incluem todas as dependências, como dependências de sistema e programação e definições de configuração. Não importa onde você os implantará, eles se comportarão da mesma forma. Agora que entendemos um pouco sobre arquitetura de contêineres, vejamos alguns termos úteis. O contêiner é um processo ou um conjunto de processos que executam uma imagem com restrições. A imagem é um pacote que contém todos os requisitos para executar esses processos ou aquele processo. Um registro é um local onde as imagens podem ser armazenadas e recuperadas. velho é a ferramenta de gerenciamento de contêineres, que usamos para gerenciar imagens, contêineres e a maneira como eles interagem. Outra alternativa popular é o Docker. E o pod é um ou vários contêineres, o que representa um único aplicativo. Então, vamos dar uma olhada nos benefícios da conteinerização. Primeiro, temos portabilidade. Um contêiner de aplicativo cria um pacote de software executável abstraído do sistema operacional host. Portanto, ele não é dependente ou vinculado ao sistema operacional de forma alguma, tornando-o portátil e permitindo que ele seja executado de forma consistente e uniforme em qualquer plataforma ou nuvem, então temos velocidade porque não há sistema operacional para inicializar. Isso também significa que a hora de início é muito baixa. Os nervos também são muito eficientes se o software executado em um ambiente em contêiner compartilha o kernel do sistema operacional da máquina host. Os desenvolvedores podem compartilhar as camadas do aplicativo entre contêineres. Além disso, os contêineres têm uma capacidade inerentemente menor do que as máquinas virtuais exigem tempos mínimos de inicialização, permitindo que os desenvolvedores executem mais contêineres na mesma capacidade de computação de um virtual máquina. Consequentemente, isso aumenta a eficiência do servidor e reduz os custos associados de servidor e licenciamento. E, por último, como afirmado anteriormente, não há sistema operacional para ambos os contêineres, também há menos sobrecarga. Entendemos a arquitetura de contêineres e os benefícios da conteinerização. Configure o ambiente do laboratório. Primeiro, examinaremos os pré-requisitos para configurar o laboratório. Depois, veremos os comandos que devemos executar. Por fim, faremos uma breve demonstração para ter nosso ambiente de laboratório em funcionamento. Agora, em termos de pré-requisitos, precisamos de um host executando o Red Hat Enterprise Linux versão oito ou superior. O host precisa estar conectado à internet. Portanto, ele precisa de uma conexão ativa com a Internet, que usaremos para baixar o Birdman e também as imagens de contêiner anexadas ao nosso host. Precisamos de uma descrição de autoatendimento ou de desenvolvedores. Isso significa que precisamos criar uma conta de desenvolvedor com a Red Hat. Além disso, é recomendável que também tenhamos uma conta em um repositório de contêineres de onde obteremos nossas imagens, como Docker ou argila. Mas isso não é obrigatório. Então, agora vamos dar uma olhada nos comandos que precisaremos para configurar nosso ambiente de laboratório. Então, na verdade, não é tão complicado. Há apenas três comandos que precisamos executar. Primeiro dia de registro do Subscription Manager, que registrará nosso sistema usando nossa conta e senha Red Hat. Depois disso, temos o Subscription Manager anexado menos menos automático, que anexará a assinatura ao nosso host. E, por fim, executaremos o comando yum install container tools para instalar a ferramenta de gerenciamento de contêineres poor man a partir de repositórios red heads depois de registrarmos com sucesso nosso host. Então, agora vamos colocar todos esses comandos em uso e configurar nosso ambiente de laboratório em nossa breve demonstração. Primeiro, usaremos o comando registrado do Subscription Manager para registrar meu sistema com a Red Hat. Vou inserir meu ID Red Hat e também minha senha. Então eu só tenho que esperar um pouco. Como você pode ver, a mensagem de saída é que o sistema foi registrado e o nome do sistema é localhost dot local domain. Usarei o comando anexar do Gerenciador de Assinaturas menos menos automático para anexar minha assinatura ao meu host. Isso pode levar um pouco de tempo, mas depois que isso for feito, então eu tenho acesso aos repositórios de cabeças de leitura também pode ver uma mensagem pop-up aparecendo dizendo que o registro é bem-sucedido e meu status está inscrito adormecido. Usarei o comando yum install container tools para instalar a ferramenta de gerenciamento de contêineres chamada Pac-Man a partir de repositórios red heads. Você pode ver que o download foi feito com êxito e está concluído. Agora. Parabéns. Agora tenha um ambiente de laboratório funcionando e funcionando. 3. Registros de contêineres: Anteriormente, configuramos nosso ambiente de laboratório. Então, agora podemos falar sobre registros de contêineres. Primeiro, faremos uma visão geral teórica do que são os registros de contêineres. E então passaremos para a demonstração, onde faremos nosso próprio registro de contêiner personalizado. Então, sem mais delongas, vamos começar. Então, quais são nossos registros de contêineres? Bem, para simplificar, há um repositório de imagens. Um registro de contêiner é um banco para armazenar e obter imagens de contêiner. Um desenvolvedor carrega imagens de contêiner um registro de contêiner. Em seguida, você pode baixar essas imagens de um registro para um sistema local para executar e criar serviços em contêiner com base nessas imagens. Existem dois tipos de registros, privados ou públicos. Você pode usar um registro público ou privado no qual sua organização controla a origem das imagens do contêiner, especialmente do lado da segurança. Para baixar imagens da maioria dos registros, primeiro você precisa ter uma conta com esses registros e você pode fazer login nesse registro usando a ferramenta de gerenciamento de contêiner old man, mais especificamente, o comando pot man login. Agora, o arquivo de configuração padrão para registros de contêiner é ensinado no arquivo de barra ETC slash container slash registry.com. Agora, ambos os homens têm a habilidade de executar contêineres implacáveis. Isso significa que podemos criar um arquivo registry.com na página inicial do diretório user dot config slash containers. Isso terá precedência sobre o geral presente em barra, ETC slash container slash registries.com. Agora, dentro do arquivo de registro do contêiner, temos a seção de pesquisa de registros. Na seção de pesquisa do registro, há uma lista de registro pesquisável configurada. Também temos os registros na seção segura. Esses registros não são protegidos com criptografia TLS. Então, agora que temos uma boa visão geral teórica dos registros, vamos dar uma olhada em alguns comandos Pokémon práticos e úteis para trabalhar com registros. Primeiro, temos o comando old man login usando o comando boat man login, como podemos ver no exemplo, vou entrar no meu registered.com usando um nome de usuário e senha. Em seguida, temos o comando pod man info nos dará informações sobre a configuração do homem PODD, incluindo registros pesquisáveis. E por último, temos o comando de busca do homem do porto, o comando de busca do homem do ponto. Posso acessar meus registros e pesquisar por uma palavra-chave específica, como HTTPD. Como exemplo, a pesquisa do PacMan, HTTPD pesquisará nos registros qualquer imagem de contêiner que contenha a palavra-chave HTTPD. Então, sem mais delongas, vamos agora para a demonstração e colocar nosso conhecimento aprendido em prática. Primeiro, usarei o VIM para mostrar o arquivo slash, ETC slash container slash registered.com. Aqui temos os registros de pesquisa não qualificados. Esses são os registros através dos quais o pod man pesquisa. Quando procuro uma imagem, temos aqui o registry.centos.org, quiet.docker.io, etc. Agora vou sair deste documento em particular. Vou criar um novo caminho usando o MK D ou Command. E meu novo caminho será contêineres de barra de configuração de pontos. Agora vou copiar o arquivo slash ETC slash containers slash registered.com para o caminho dos contêineres de barra de configuração de ponto. Vou manter o mesmo nome, registry.com. Agora, editarei esse arquivo específico porque só quero que minha ferramenta de gerenciamento de contêiner pod man pesquise em registry.access.redhead.com. Portanto, excluirei todos os registros que não gostaria de usar, como pontos do Registro, CentOS.org, quiet.io e docker.io. Em seguida, salvarei e sairei deste documento. Agora vou fazer um comando de pesquisa PubMed com o termo HTTPD para testar se meus registros estão bem. E podemos ver claramente que temos resultados aqui. Agora, vou limpar a tela e usar o comando port man info para obter informações sobre nossa configuração do Pac-Man. E podemos ver claramente aqui que os registros pesquisáveis são apenas registry.access.com. Então, o único que eu deixei dentro do arquivo dot config slash registries.com. Portanto, nossa demonstração funcionou perfeitamente. Muito obrigado e até o próximo módulo. 4. Como gerenciar contêineres: Anteriormente, aprendemos sobre registros de contêineres. Agora, neste módulo, aprenderemos como gerenciar contêineres usando a ferramenta de gerenciamento de contêineres pod man. Este será um módulo altamente prático e encerraremos este módulo com a demonstração, colocando em prática todo o nosso conhecimento aprendido. Então, sem mais delongas, vamos começar. Agora, em termos de comandos úteis, primeiro temos o comando port man pool, especificando um registro e, especificando um registro e em seguida, a imagem dentro desse repositório. Isso fará o download dessa imagem para o host local. Depois, temos o comando Pokemon inspect especificando uma imagem salva localmente. Isso nos dará informações detalhadas sobre essa imagem do contêiner. Usando o comando pod man images, podemos obter uma lista de imagens salvas localmente e usando o comando poor man RMI especificando um nome de imagem, podemos remover uma imagem salva localmente. Agora, antes de entrarmos em contêineres em execução, vamos fazer uma breve visão geral dos estados nos quais um contêiner pode ser encontrado. Ótimo, isso significa que nosso contêiner foi criado, mas não começou a ser executado significa que um contêiner está sendo executado com todos os seus processos. Parar significa que um contêiner está parado e está aguardando o início do sinal. Seus processos estão esperando pela mesma coisa. Publicar significa que um contêiner e seus processos são pausados enquanto isso significa que todos os seus processos foram encerrados. Agora, vejamos alguns comandos úteis para executar contêineres usando a ferramenta de gerenciamento de contêineres poor man com o podium e o comando run. Podemos executar um comando dentro de um contêiner. Podemos especificar o nome com a opção minus-minus name. E no final do comando, especificamos a imagem na qual esse contêiner é baseado usando a opção menos d, que significa desanexado, significa que o contêiner será executado em modo destacado. Isso significa que o contêiner será executado em segundo plano até ser interrompido. Usando o comando pot man ps, podemos listar todos os contêineres em execução usando o comando pod man ps com esta opção menos a, podemos listar todos os contêineres em execução ou não. Usando o comando pod man logs. Podemos obter cargas de um contêiner de nomes, o que pode nos ajudar a solucionar possíveis problemas associados a esse contêiner. Eu gostaria de especificar que, se usarmos a opção menos e, declararemos variáveis ambientais que são passadas para esse contêiner. Nós deportamos o comando man stop especificando um nome de contêiner. Podemos parar um contêiner em execução com o comando de inicialização do Pac-Man. Novamente, especificando o nome do contêiner. Podemos iniciar um contêiner parado usando o comando pod man RM. Podemos remover um contêiner especificando seu nome. Com o comando Pac-Man cp. Podemos copiar arquivos do host para um contêiner usando o comando old man exec especificando um nome de contêiner, podemos executar um comando dentro um contêiner de nome e usando o comando pot man exec com as opções menos IT especificando slash bin slash bash, podemos obter um terminal dentro de um contêiner de nome. A opção menos i encaminhará todas as entradas do host para o contêiner. E a opção menos d nos dará um pseudo terminal dentro desse contêiner. Agora que temos uma boa visão geral de todos os comandos importantes necessários para executar contêineres usando a ferramenta de gerenciamento de contêiner de pod. Vamos para a demonstração. Agora, primeiro, procurarei uma imagem HTTP D usando o comando search do pod man. Vou apenas rolar um pouco para cima e dentro da descrição, posso ver um servidor Apache HTTP 2.4. Copiarei o nome dessa imagem e limparei a tela e usarei o comando Postman pull para baixá-la localmente. Como você pode ver, ele está tentando extrair a imagem do registro, está obtendo as assinaturas de origem e copiando as bolhas enquanto falamos. Então, vamos esperar um pouco. Portanto, a votação foi bem-sucedida. Agora, para validar isso, usarei o comando pod man images e podemos ver que nossa imagem está presente aqui. Em seguida, usarei o comando port mapping spec para obter informações detalhadas sobre essa imagem específica. Podemos ver muitas informações aqui. Primeiro, podemos ver o usuário sob o qual essa imagem é executada, que é usada em 1001. Também podemos ver detalhes sobre as portas expostas da imagem, que são 8088443. Um resumo e uma descrição do que esta imagem deve fazer, o diretório de trabalho desta imagem, e também detalhes sobre o fornecedor da imagem que é ruiva incorporada, e a versão da imagem que é 2.4. Vou apenas limpar a tela. Agora. Agora vou usar o comando port VLAN run especificando o nome do meu contêiner por meio da opção minus-minus name. E será chamado de aplicativo da web e a imagem na qual baseá-lo. E podemos ver claramente que o contêiner começou. Ele nos dá alguns logs e erros, mas funcionou corretamente. Só vou sair da tela. Agora vou usar o comando boatman ps minus a para listar todos os contêineres. E podemos ver claramente nosso contêiner de aplicativos da web, que foi criado há 39 segundos. Vou removê-lo usando o comando rm poor man especificando seu nome. Agora, vou executar o contêiner novamente, mas agora no modo desanexado especificado através da opção menos d. Manterei o aplicativo da web com o mesmo nome e ele será baseado na mesma imagem. Vou validar meu trabalho através do uso do comando pause band ps, que nos mostrará todos os contêineres em execução. E podemos ver que nosso contêiner chamado Web App, que foi criado há dois segundos, está funcionando. Obterei informações detalhadas sobre este contêiner por meio do uso de registros do Pac-Man. E podemos ver alguns registros associados ao nosso contêiner de aplicativos da web. Agora, deixe-me limpar a tela. E agora vamos usar o comando stop Pokémon para parar com um contêiner de aplicativo da web. Podemos validar nosso trabalho através do uso do old man ps menos um comando onde podemos verificar o status do contêiner e ele mudou de up para exit. Iniciarei o contêiner novamente usando o comando boatman start. E como você pode ver, o status mudou novamente de encerrado para ativo. Então, agora eu gostaria de demonstrar o comando Pac-Man cp. Mas antes disso, criarei um documento chamado index.html com o conteúdo do helloworld usando o comando echo e o redirecionamento de saída, depois usarei o comando port man cp, especificando o arquivo index.html que eu criei anteriormente. E eu vou transferi-lo para o contêiner chamado wet-bulb dentro do passado slash var slash v, V, v slash HTML slash index.html. Agora, vou entrar no contêiner usando o comando boatman exec com as opções menos IT slash bin slash bash. Como você pode ver, o lote mudou e, executando um comando P S menos ox, posso ver claramente que não estou mais no meu host local. Estou dentro do contêiner. Vou mudar o diretório para o caminho HTML da barra var barra VB barra. E aqui eu posso fazer uma lista. Dentro dessa lista, podemos ver claramente o arquivo index.html. E vou apenas ler o conteúdo desse arquivo, que é exatamente como especificado. Olá mundo. Copiamos com sucesso nosso arquivo de dentro do host local para o contêiner no caminho especificado. Se eu quisesse verificar o conteúdo desse arquivo sem entrar no contêiner, posso fazer isso usando o comando pod man exec para executar o comando cat no caminho especificado. Então, agora é hora de nos limparmos. Primeiro, listarei todos os contêineres com o pod man ps menos um comando, e podemos ver claramente nosso contêiner de aplicativo da web lá. Em seguida, vou parar o contêiner com o comando Pokemon stop web app. Depois, removerei o contêiner com o comando port man RM. Em seguida, listarei todas as imagens presentes no meu host local usando o comando Pokemon images, removerei minha imagem existente com o comando pot man RMI. E vou listar novamente todas as imagens com o comando Pokemon images. E podemos ver claramente que não temos imagens. E usando o comando pod man ps minus a, também podemos ver claramente que não há mais contêineres em execução neste momento. Então, parabéns. Agora você tem uma compreensão básica de como gerenciar serviços em contêineres usando a ferramenta de gerenciamento de contêineres do port man. Vejo você no próximo módulo, onde falaremos sobre o gerenciamento de imagens de contêineres. 5. Como gerenciar imagens: No módulo anterior, falamos sobre gerenciamento de contêineres. Agora, vamos ver também maneiras pelas quais podemos gerenciar imagens em nosso ambiente. Então, sem mais delongas, vamos começar. Agora, vamos dar uma olhada em alguns comandos essenciais para gerenciar imagens dentro de carteiros. Nós vimos anteriormente uma piscina masculina derramada. Agora, usando o comando port man poor, podemos salvar uma imagem de contêiner localmente a partir de um repositório. Podemos listar todas as imagens do contêiner usando as imagens do homem da panela. E se quisermos remover uma imagem salva localmente, podemos usar o comando pod man RMI especificando o nome da imagem. Agora vamos supor que gostaríamos de renomear uma imagem. Podemos fazer isso usando o comando Pac-Man tag, especificando o nome da imagem original e o novo nome da imagem. Gostaríamos de dar. Se quisermos fazer upload uma imagem de contêiner segura localmente para um registro, podemos fazer isso usando o comando push do Pac-Man. Se quisermos obter informações detalhadas sobre uma imagem de contêiner armazenada localmente, conforme discutido anteriormente, podemos fazer isso usando o comando pot man inspect. Agora vamos supor que trabalhamos em um contêiner como um servidor web HTTP. E modificamos nosso arquivo index.html e gostaríamos de criar uma nova imagem com base nesse contêiner alterado. Podemos fazer isso usando o comando pod men commit para criar uma imagem a partir de um contêiner em execução. Agora que temos uma visão geral de todos os comandos importantes para gerenciamento de imagens, vamos para a demonstração. Primeiro, usarei a pesquisa do port man para encontrar uma imagem HTTPD adequada. Vou rolar para cima dentro dos resultados. E, novamente, copiarei o primeiro resultado, que é HTTP D24 RHEL sete. Eu limparia a tela e agora usarei o pool Pac-Man para baixar essa imagem do repositório e salvá-la localmente. Agora, vamos esperar um pouco para o puxão seja finalizado. Então, agora que o download está completo, posso usar imagens do Pac-Man para validar se a imagem foi bem-sucedida. E podemos ver isso aqui. Agora, vou usar o inspetor do port man para inspecionar a imagem. Como você pode ver, o Pokémon expect nos fornece informações detalhadas sobre essa imagem em particular. Podemos ver o usuário sob o qual a imagem está sendo executada. Podemos ver as portas expostas. Você pode ver um resumo do que a imagem pretende fazer, uma descrição detalhada sobre isso. Agora, eu gostaria de retrair a imagem usando o comando boatman tag, especificando o nome da imagem original e a nova tag que vou dar a ela será chamada de minha nova tag versão 2. Eu posso construí-lo trabalhando usando as imagens de Pokémon Comando N. Podemos ver claramente aqui localhost slash minute tag versão 2. Agora vou usar o contêiner de comando port man run em execução no modo desanexado. O contêiner será chamado de aplicativo da web e será baseado na imagem chamada tag de minuto versão 2. Como você pode ver, o contêiner foi criado com sucesso. E agora vou executar o comando Pac-Man ps menos um para validar se ele está funcionando. E o que você sabe que está funcionando adequadamente? Em seguida, abrirei um terminal dentro do contêiner usando o comando pot man exact minus IT slash bin slash bash. Lá, farei um teste de eco e redirecionarei a saída para o arquivo slash var slash slash HTML slash index.html. Dentro desse contêiner, vou sair do contêiner. Vou executar o Pac-Man ps menos a. Novamente, podemos ver que ele está funcionando. E vou usar o comando chamado Pac-Man commit para criar uma imagem com base neste contêiner alterado, pod men commit web app, minha nova imagem, versão 1, podemos ver que a imagem foi criado com sucesso. Pararei o contêiner existente chamado mapa da web e o removerei usando o comando rm poor man. Vou limpar a tela. E agora vou criar um novo contêiner em execução no modo desanexado com o mesmo nome, mas agora com base na imagem confirmada que criamos anteriormente, o contêiner foi criado com sucesso e agora vou usar o comando pot man exec para executar um comando cat dentro do contêiner para ver se o arquivo está presente. Barras de barra de gato como v, V, v barra HTML barra index.html. E podemos ver claramente que o resultado é o esperado nos testes do Sul, então funcionou perfeitamente. Agora, vou usar o comando Pokémon stop para interromper o contêiner do meu aplicativo da web. Vou removê-lo usando o comando pod man RM. Agora estarei executando o comando Pac-Man images para listar todas as imagens salvas no meu sistema de arquivos local. E vou remover cada um deles com o comando Pokemon RMI. Então, homem orgulhoso, RMI, imagem minuto versão 1, homem da panela, RMI, minha nova tag 2 e pobre homem RMI registry dot access, ambos Red Hat.com, podemos validar que nossos sistemas, ele é limpo por executando o comando pot man images e o departamento ps menos um comando e não há mais nada lá. Parabéns, agora você tem uma compreensão básica de como gerenciar imagens de contêiner usando a ferramenta de gerenciamento de contêineres Pac-Man. Vejo você no próximo módulo em que falaremos sobre armazenamento efêmero e persistente. 6. Armazenamento persistente: Olá e bem-vindo de volta. Neste módulo, falaremos sobre armazenamento de contêineres e aprenderemos como montar armazenamento persistente dentro de contêineres. Porque, por padrão, os contêineres têm armazenamento efêmero. Então isso significa que tudo o que fizemos dentro um contêiner no momento da destruição, desapareceu. Então, vamos ao que interessa. Portanto, o armazenamento que o contêiner usa é efêmero. A natureza efêmera do armazenamento de contêineres significa que seu conteúdo é perdido depois que você remove o contêiner, montando um diretório do host dentro do contêiner, você está fornecendo o contêiner. armazenamento persistente. Todas as alterações e conteúdos do diretório montado serão gravados no sistema de arquivos host. Assim, eles persistirão depois que o contêiner for destruído ou removido. Lembre-se de que você deve levar em consideração as permissões do sistema de arquivos ao montar um volume persistente para o contêiner usar. Agora, a ferramenta de gerenciamento de contêiner Pokémon oferece suporte contêineres sem raiz se você estiver executando o contêiner como a raiz do usuário do host, então o UID e o GID corresponderão àqueles dentro do contêiner. Em um contêiner sem raiz, usuário tem acesso root dentro do contêiner porque o pod man cria o contêiner dentro do namespace do usuário, o usuário raiz do contêiner mapeia para o UID do usuário. dentro da máquina host. Cada usuário depois de dentro do contêiner mapeia para um usuário dentro do intervalo de 100 mil. Então, agora vamos dar uma olhada em alguns comandos úteis para montar o armazenamento persistente em contêineres. Com o mapa UID Padma unshare cat slash proc slash slash. Podemos ver esse mapeamento UID de usuários dentro do contêiner. Nós deportamos homem, unshare cat slash proc slash slash mapa JD. Podemos ver esse mapeamento GID. Agora, se quisermos montar o armazenamento persistente dentro de um contêiner, usaremos o comando pod man run com a opção menos v. O primeiro comando cria um servidor web HTTP onde o conteúdo é obtido do diretório montado ( barra), o conteúdo da web no host é montado na var, barra, www), barra, ponto, barra, caminho HTML dentro do contêiner. Adicionar um Z maiúsculo no final do caminho também garantirá que você esteja definindo o contexto correto do SE Linux. Agora, vamos à demonstração e tornar as coisas um pouco mais práticas. Então, vamos começar esta demonstração examinando primeiro os mapeamentos GID e UID usando o comando pod man unshare. Pod man, descompartilhe cat slash, proc slash, corte seu mapa de identificação. E podemos ver os mapeamentos aqui. E Birdman unshare cat slash proc slash tamanho da célula JID. E podemos ver os mapeamentos GID aqui. Agora que temos isso, vamos criar um novo caminho. Vou criar um diretório chamado conteúdo da web na casa do meu usuário. Dentro desta pasta, vou ecoar a mensagem montada IN e redirecionarei a saída para um arquivo chamado index.html. Agora vou limpar a tela e vamos ver quais imagens temos disponíveis usando o comando Pac-Man images. Não temos nenhum. Portanto, usarei o comando pod man pull para baixar uma imagem de um servidor HTTP localmente. E vamos esperar um pouco até que a imagem termine de baixar. O download da imagem foi concluído com êxito. E podemos usar o comando pod man run para criar um contêiner chamado Web App. Ele será executado no modo desanexado e eu estarei montando o diretório de conteúdo da web que eu criei anteriormente do meu host para a pasta HTML slash var slash www barra dentro do contêiner, mantendo os contextos corretos do SELinux. Ao adicionar o Z maiúsculo no final, vincularei a porta através da opção menos p. Portanto, a porta 8082 do host será vinculada à porta 8080 do contêiner. E vou usar a imagem que baixei anteriormente. Como podemos ver usando o comando pod man ps minus a, o contêiner está funcionando e a porta está delimitada corretamente. Se eu fizer um comando curl no host local por meio da porta 8082, poderemos ver a mensagem, Eu sou Mountain. Agora vou usar o comando boatman exec para obter um terminal N dentro do contêiner e vou ecoar uma nova mensagem. Esta mensagem significa que fui modificado e vou gerar a saída padrão, o arquivo que montamos dentro do contêiner. Então, index.html. Vou sair do contêiner usando o comando exit e agora vou ler o arquivo dos pontos de montagem, portanto, do conteúdo da web. E podemos ver que ambos os valores estão montados e eu modifiquei. Se eu usar o comando curl, podemos ver a mesma saída. Agora, vou parar o contêiner e removerei o contêiner usando o comando pod man RM. E vou recriá-lo apenas para ver a natureza do armazenamento persistente. Então, vamos testar isso executando um comando curl no host local na porta 8082. Como você pode ver, a mensagem permaneceu inalterada. Isso ocorre porque o armazenamento desse contêiner específico para esse caminho específico é mantido no host local. Portanto, mesmo que o contêiner tenha sido destruído, o que foi escrito no diretório de conteúdo da web permaneceu persistente. Muito obrigado e nos vemos no próximo módulo, onde falaremos sobre vinculação de portas. 7. Vinculação de portas: Olá e bem-vindo de volta. No módulo anterior, falamos sobre o armazenamento efêmero e o armazenamento persistente, e aprendemos como dar aos contêineres armazenamento persistente, que não percamos nada quando eles são destruídos. Dentro deste módulo, falaremos sobre vinculação de portas e como vincular as portas do host local aos pontos de contêiner para torná-los acessíveis de fora também. Então, vamos ao que interessa. O que é vinculação de porta de contêiner? Bem, conectar-se a um contêiner significa que os clientes devem conectar duas portas do host que enviarão tráfego para os esportes de contêiner ou para as portas expostas aos contêineres. Podemos mapear portas do host para aquelas acessíveis de dentro do contêiner, para tornar os contêineres acessíveis de fora também, não apenas do host local. Lembre-se de que, se você quiser torná-los acessíveis de fora também, também precisamos verificar as regras de firewall para garantir que qualquer tráfego nessas portas seja permitido. Então, com isso em mente, vamos dar uma olhada em alguns comandos essenciais para fazer a ligação da porta do contêiner. Agora, para vincular uma porta do host local ao contêiner, usaremos o comando pod man run com a opção minus p. Nosso primeiro exemplo cria um servidor web HTTPD em contêiner chamado web app, onde todo o tráfego da porta 8082 do host é passado para a porta 8080 do contêiner. Lembre-se de que o contêiner deve aceitar tráfego nessa porta. Isso significa que ele tem que ser exposto. E podemos ver que usando o comando pot man in spec na imagem do contêiner, usando a porta portmanteau menos um comando, podemos ver todos os mapeamentos de portas. E usando o comando pod man port especificando o nome do contêiner, podemos ver o mapeamento de portas para um contêiner de nome. Não se esqueça de criar uma regra de firewall persistente usando o comando firewall CMD para permitir o tráfego nessa porta. Agora que você tem uma boa visão geral teórica do que é o mapeamento de portas e sua função no Container Management. Vamos para a demonstração. Primeiro, usarei o comando Pokemon images para mostrar que tenho uma imagem de contêiner HTTPD salva localmente presente. Em seguida, usarei o comando port man run para criar um contêiner chamado web app running and detached mode, que encaminhará todo o tráfego da porta 8082 do lado do host para a porta 8080 em o lado do recipiente. Como podemos ver através do pod man ps menos um comando, o contêiner está instalado e funcionando. Agora vou usar um comando executivo do homem orgulhoso com a opção menos i t para obter um terminal ativo dentro do contêiner. Aqui, vou ecoar a mensagem hello world e redirecionarei a saída para o arquivo slash var slash www slash HTML slash index.html. Em seguida, vou sair do contêiner com o comando exit. Agora usaremos o comando port man port minus a para ver todos os mapeamentos de portas. E podemos ver claramente que o tráfego do host local na porta 8082 é redirecionado para a porta 8080 do contêiner. Também podemos ver isso usando o comando port man port especificando o nome web app. Agora vamos testar isso usando um comando curl e chamaremos o host local na porta 8082. E podemos ver claramente a mensagem helloworld. Então funcionou perfeitamente. Agora, para tornar o tráfego acessível de fora do host local, também adicionarei uma regra de firewall para permitir o tráfego na porta 8082. Está me pedindo privilégios administrativos. Eu darei a eles e foi um sucesso. Portanto, agora nosso servidor web Apache em contêiner pode ser acessado tanto do host local quanto fora do host local na porta 8082. Também podemos ver a ligação de portas, mesmo se executarmos um Pokémon ps menos um comando, podemos ver claramente aqui que o tráfego do host local é redirecionado para a porta 8080 slash TCP no lado do contêiner. Agora, como eu sei que devo fazer diretamente para a porta 8080 no lado do contêiner, é aqui que o Pokémon inspect entra em jogo. Podemos inspecionar a imagem do contêiner localmente seguro e observaremos as portas expostas. As portas expostas são, na verdade o que está acessível ao contêiner. De onde ele permite o tráfego? Então foi assim que eu soube que a porta 8080 era para onde eu deveria redirecionar o tráfego da porta 8082. Agora tudo o que resta é limpar depois de nós mesmos, nosso aplicativo web stop the container com o comando man stop. Em seguida, vou removê-lo com o comando Pokemon RM. E por último, removerei a imagem com o comando Pokemon RMI. Muito obrigado e até o próximo módulo em que falaremos sobre Rede de Contêineres. 8. Rede de contêineres: Olá e bem-vindo de volta. No módulo anterior, falamos um pouco sobre mapeamento de portas e vinculação de uma porta de host a uma porta exposta de contêineres. Agora vamos nos aprofundar mais com a Rede de Contêineres. Veremos a capacidade do pobre homem de criar redes e resolver nomes dentro dessas redes. Então, sem mais delongas, vamos começar. Agora, vamos dar uma olhada em alguns pontos essenciais para a Rede de Contêineres. O comando importante aqui é a rede de ambos os homens com o comando postman network create. Podemos criar uma rede especificando seu nome de gateway e sub-rede. O pobre homem inspecionar a rede especificando um nome de rede, podemos obter detalhes sobre uma rede existente. Nós deportamos man network creates especificando um nome de contêiner. Podemos conectar o contêiner a uma rede existente. Nós deportamos a rede man removida. Podemos remover uma rede existente e deportar o comando man run. Podemos adicionar a opção de rede menos menos e conectar o contêiner a uma rede após a criação. Agora que temos uma boa visão geral dos comandos importantes relacionados ao Container Networking, vamos para a demonstração. Agora, para iniciar esta demonstração, usarei o comando port man images para mostrar minha imagem de contêiner HTTPD salva localmente. Agora vou usar o comando de busca do pobre homem para procurar uma oitava imagem do Red Hat Enterprise Linux. Eu copiei e agora vou usar os comandos do post man Paul para baixá-lo localmente. Então, vamos esperar um pouco para que o download seja concluído. Agora vou usar o comando poor man network create para criar uma rede para meus contêineres. A sub-rede será especificada por meio da opção menos menos sub-rede e será 192168 ponto um ponto 0 barra 24. E o gateway será especificado por meio da opção de gateway menos-menos, e será 192168 ponto um, ponto um. O nome da minha rede será minha rede. Agora que a rede foi criada com sucesso, podemos prosseguir para a criação dos meus serviços em contêineres. Primeiro, usarei o comando Pac-Man run para criar um contêiner chamado cliente em execução no modo desconectado, conectado à minha rede por meio da opção de rede minus-minus com armazenamento persistente. E a imagem base por trás desse contêiner será a imagem de oito bases do Red Hat Enterprise Linux. Como você pode ver, o contêiner foi criado com sucesso e listarei ou executarei contêineres com o Pokémon ps menos uma opção, e ele está funcionando. Em seguida, criarei meu segundo serviço em contêiner usando o comando Pokémon run. Este será um servidor web Apache chamado servidor web, rodando em modo desconectado, conectado também à minha rede. Ele usará a imagem register.access.com http D24 L7, que eu armazenei localmente. Esse segundo contêiner também foi criado com sucesso. Podemos vê-los funcionando e funcionando. Agora, usarei o comando pod man network ls para ver todas as nossas redes disponíveis. E podemos ver claramente minha rede aqui. E para obter informações mais detalhadas sobre minha rede, usarei o comando postman network inspect especificando o nome da minha rede. E podemos ver aqui a sub-rede e o gateway. Agora que temos uma boa visão geral de nossa rede e de nossos contêineres, vamos ver se tudo funciona. Usarei o comando port man exec com a opção minus IT para abrir um terminal dentro do contêiner do servidor web. Aqui vou usar o comando echo e redirecionar sua saída para o arquivo slash var slash www slash HTML slash index.html. Para criar uma mensagem personalizada. Mais especificamente, olá, vou sair deste contêiner e agora vou entrar no outro contêiner, o contêiner do cliente, novamente com o pot man isento menos a opção de TI para obter um terminal dentro do cliente que está executando o Red Hat Enterprise Linux oito. Aqui vou usar o comando curl para enrolar o servidor web na porta 8080, que foi a exposta. E podemos ver claramente que a mensagem é a esperada. Então, parabéns, criamos dois contêineres. Um rodando em um servidor web Apache conteinerizado executando o Red Hat Enterprise Linux oito, criamos uma rede entre os dois e podemos ver que eles se comunicam e também nomearam resolução do servidor. Muito obrigado e nos vemos no próximo e último módulo. 9. Como criar imagens: Bem-vindo ao módulo final do nosso curso. Aqui, aprenderemos como criar imagens de contêiner a partir de arquivos para nos ajudar a criar nossas próprias imagens personalizadas e personalizá-las de acordo com nossas próprias necessidades. Então, sem mais delongas, vamos começar. Primeiro, falaremos sobre as etapas para a construção de uma imagem de contêiner. Para que o Birdman possa criar imagens automaticamente lendo as etapas de um arquivo Docker, você pode perguntar o que é um arquivo Docker? Um arquivo Docker é um documento de texto que contém todos os comandos que um usuário pode chamar para montar uma imagem. Agora, os arquivos do Docker também facilitam a criação de novas imagens de contêiner com base em uma existente, como estender uma largura de imagem de contêiner Enterprise Linux classificada largura de imagem de contêiner Enterprise Linux e a funcionalidade HTTPD. Então, vamos seguir em frente e ver como realmente criamos uma imagem de contêiner. Primeiro, crie um diretório de trabalho que contenha todos os arquivos necessários para criar a imagem do contêiner. Em seguida, criamos um arquivo Docker. Um arquivo Docker é apenas um documento de texto que contém todos os comandos que um usuário pode chamar para montar uma imagem. E por último, usamos o comando depots man build. Usamos o comando build Poll Man para criar a imagem com base no arquivo docker e outros recursos dentro do diretório de trabalho. Então, agora vamos dar uma olhada em um exemplo do Dockerfile e ver nossas possibilidades. Agora, aqui temos um Dockerfile simples. O campo de indica qual imagem de Bates deve ser estendida. O campo label indica qual rótulo essa imagem de contêiner terá. O Rosenfield executa comandos dentro da imagem base, o campo exposto expõe as portas do lado do contêiner. O campo EM define variáveis ambientais dentro do contêiner. O campo de cópia copia do diretório de trabalho para o contêiner. O campo de usuário define o usuário sob o qual o contêiner é executado, pois o campo de adição é semelhante ao campo de cópia. O campo do ponto de entrada diz o comando com o qual o contêiner começa. E podemos criar o contêiner analisando esse arquivo Docker com o comando pod men build. Então, vamos colocar todo esse conhecimento em prática, passando para a demonstração. Agora vou começar esta demonstração listando o conteúdo do meu diretório de trabalho. Eu tenho um arquivo index.html que contém a mensagem hello world e um arquivo Docker pré-fabricado que eu montei anteriormente. Vamos dar uma olhada nisso. Portanto, ele estende a imagem sete do Red Hat Enterprise Linux, o usuário sob o qual o contêiner está sendo executado como root. Ele executa uma instalação yum menos y HTTPD. Para instalar o serviço HTTPD, ele expõe a porta 80 e copia o arquivo index.html do diretório de trabalho para o contêiner barra var barra barra HTML index.html caminho. Agora, vou usar o comando port man build para criar minha imagem. Estou especificando a opção menos d para tag, que dará à mãe minha imagem, o nome da minha imagem HTTPD. Agora, vou usar o comando Pac-Man images para ver se a imagem foi criada. E podemos ver isso aqui, localhost corta minha imagem HTTPD. Agora vamos fazer um teste. Usarei o comando pot man run especificando que o contêiner será executado no modo desanexado. O nome do meu contêiner será Web App. Estarei encaminhando a porta 8082 para a porta 80 do contêiner e usarei minha própria imagem criada. O contêiner parece estar funcionando. O encaminhamento de porta parece funcionar. Então, vamos fazer uma ondulação no host local na porta 8082, e podemos ver claramente a mensagem hello world. Portanto, o arquivo foi copiado com sucesso. Vamos entrar no contêiner com as opções Pac-Man exec menos i t para abrir um terminal dentro do contêiner. Como você pode ver, o terminal foi aberto como root. Portanto, o usuário que eu especifico no arquivo Docker é usado e o arquivo que copiamos do host local para o contêiner está presente. Então, o arquivo do Docker fez o prometido. Temos um sistema operacional Red Hat Enterprise Linux seven em contêiner rodando no serviço HTTPD. Ao finalizar esta demonstração, também concluímos nosso curso intensivo sobre gerenciamento de contêineres. Gostaria de agradecer por sua participação e talvez nos vejamos em outros cursos futuros. Muito obrigado.