Pesquisa de site

Instale o Docker e aprenda a manipulação básica de contêineres no CentOS e RHEL 8/7 - Parte 1


Nesta série de 4 artigos, discutiremos o Docker, que é uma ferramenta de virtualização leve e de código aberto que roda no nível superior do sistema operacional, permitindo aos usuários criar, executar e implantar aplicativos, encapsulados em pequenos containers.

Este tipo de contêiner Linux é comprovadamente rápido, portátil e seguro. Os processos executados em um contêiner Docker estão sempre isolados do host principal, evitando adulterações externas.

Este tutorial fornece um ponto de partida sobre como instalar o Docker, criar e executar contêineres do Docker no CentOS/RHEL 8/7, mas mal arranha a superfície do Docker.

Etapa 1: instalar e configurar o Docker

1. Versões anteriores do Docker eram chamadas de docker ou docker-engine. Se você os tiver instalados, deverá desinstale-os antes de instalar uma versão mais recente do docker-ce.

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. Para instalar a versão mais recente do docker Engine você precisa configurar o repositório Docker e instalar o pacote yum-utils para habilitar o Docker repositório estável no sistema.

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3. Agora instale a versão mais recente do docker-ce do repositório Docker e container manualmente, porque devido a alguns problemas, a Red Hat bloqueou a instalação do containerd.io > 1.2.0-3.el7, que é uma dependência do docker-ce.

yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install docker-ce docker-ce-cli

4. Após a instalação do pacote Docker, inicie o daemon, verifique seu status e habilite-o em todo o sistema usando os comandos abaixo:

systemctl start docker 
systemctl status docker
systemctl enable docker

5. Por fim, execute uma imagem de teste do contêiner para verificar se o Docker funciona corretamente, emitindo o seguinte comando:

docker run hello-world

Se você conseguir ver a mensagem abaixo, então tudo está no lugar certo.

Saída de amostra
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

6. Agora, você pode executar alguns comandos básicos do Docker para obter algumas informações sobre o Docker:

Para obter informações de todo o sistema sobre Docker
docker info

Para versão Docker
docker version

7. Para obter uma lista de todos os comandos disponíveis do Docker, digite docker em seu console.

docker

Etapa 2: Baixe uma imagem Docker

8. Para iniciar e executar um contêiner Docker, primeiro, uma imagem deve ser baixada do Docker Hub em seu host. Docker Hub oferece muitas imagens gratuitas de seus repositórios.

Para procurar uma imagem Docker, Ubuntu, por exemplo, emita o seguinte comando:

docker search ubuntu

9. Depois de decidir qual imagem deseja executar com base em suas necessidades, baixe-a localmente executando o comando abaixo (neste caso, uma imagem do Ubuntu é baixada e usada ):

docker pull ubuntu

10. Para listar todas as imagens Docker disponíveis em seu host, emita o seguinte comando:

docker images

11. Se você não precisa mais de uma imagem Docker e deseja removê-la do host, emita o seguinte comando:

docker rmi ubuntu

Etapa 3: execute um contêiner Docker

Ao executar um comando em uma imagem, você basicamente obtém um contêiner. Depois que o comando que está sendo executado no contêiner termina, o contêiner para (você obtém um contêiner que não está em execução ou foi encerrado). Se você executar outro comando na mesma imagem novamente, um novo contêiner será criado e assim por diante.

Todos os contêineres criados permanecerão no sistema de arquivos host até que você opte por excluí-los usando o comando docker rm.

12. Para criar e executar um contêiner, você precisa executar o comando em uma imagem baixada, neste caso, Ubuntu, então um comando básico seria exibir o arquivo de versão de distribuição dentro do contêiner usando o comando cat, como no exemplo a seguir:

docker run ubuntu cat /etc/issue

O comando acima está dividido da seguinte forma:

docker run [local image] [command to run into container]

13. Para executar novamente um dos containers com o comando que foi executado para criá-lo, primeiro você deve obter o ID do container (ou o nome gerado automaticamente pelo Docker) emitindo o comando abaixo, que exibe uma lista dos contêineres em execução e parados (não em execução):

docker ps -l 

14. Uma vez obtido o ID do contêiner, você pode iniciar o contêiner novamente com o comando que foi usado para criá-lo, emitindo o seguinte comando:

docker start 923a720da57f

Aqui, a string 923a720da57f representa o ID do contêiner.

15. Caso o contêiner esteja em estado de execução, você pode obter seu ID emitindo o comando docker ps. Para interromper o comando docker stop do problema do contêiner em execução, especificando o ID do contêiner ou o nome gerado automaticamente.

docker stop 923a720da57f
OR
docker stop cool_lalande
docker ps

16. Uma alternativa mais elegante para que você não precise se lembrar do ID do contêiner seria alocar um nome exclusivo para cada contêiner criado usando o - -name na linha de comando, como no exemplo a seguir:

docker run --name ubuntu20.04 ubuntu cat /etc/issue

17. Então, usando o nome que você alocou para o contêiner, você pode manipular o contêiner (iniciar, parar, remover, top, stats) apenas abordando seu nome, como nos exemplos abaixo:

docker start ubuntu20.04
docker stats ubuntu20.04
docker top ubuntu20.04 

Esteja ciente de que alguns dos comandos acima podem não exibir nenhuma saída se o processo do comando usado para criar o contêiner for concluído. Quando o processo executado dentro do contêiner termina, o contêiner para.

Etapa 4: execute uma sessão interativa em um contêiner

18. Para conectar-se interativamente a uma sessão de shell de contêiner e executar comandos como faria em qualquer outra sessão do Linux, emita o seguinte comando:

docker run -it ubuntu bash

O comando acima está dividido da seguinte forma:

  1. -i é usado para iniciar uma sessão interativa.
  2. -t aloca um TTY e anexa stdin e stdout.
  3. ubuntu é a imagem que usamos para criar o contêiner.
  4. bash (ou /bin/bash) é o comando que estamos executando dentro do contêiner do Ubuntu.

19. Para sair e retornar ao host a partir da sessão do contêiner em execução, você deve digitar o comando exit. O comando exit encerra todos os processos do contêiner e os interrompe.

exit

20. Se você estiver conectado interativamente no prompt do terminal do contêiner e precisar manter o contêiner em estado de execução, mas sair da sessão interativa, você pode sair< no console e retorne ao terminal host pressionando as teclas Ctrl+p e Ctrl+q.

21. Para se reconectar ao contêiner em execução, você precisa do ID ou do nome do contêiner. Emita o comando docker ps para obter o ID ou nome e, em seguida, execute o comando docker attachment especificando o contêiner ID ou nome, conforme ilustrado na imagem acima:

docker attach <container id>

22. Para interromper um contêiner em execução na sessão do host, emita o seguinte comando:

docker kill <container id>

Isso é tudo para a manipulação básica de contêineres. No próximo tutorial, discutiremos como salvar, excluir e executar um servidor web em um contêiner Docker.