docker-capa-post.jpg

Neste artigo, vamos rodar um contêiner Docker a partir de uma imagem do Docker Hub e executar os comandos básicos.

Observação: Este é o segundo artigo de uma trilha chamada “Docker”. Fica o convite de conhecer os demais artigos!

1. Validando a intalação do Docker

Inicialmente, vamos conhecer alguns comandos Docker com a intenção de validar sua instalação

Vamos verificar o resultado de cada um dos comandos

# Informa a versão do Docker instalada em sua estação
$ docker --version

docker-version.png

# Podemos usar o help para entendermos melhor os comandos.
$ docker --help

docker-help.png

# Para utilizar o help em um comando, 
  vamos utilizar o comando run como exempo: 
$ docker run --help

docker-run-help.png

Caso o resultado em sua estação seja similar ao apresentado nas imagens, sua instalação do docker está OK e podemos serguir com a criação do nosso primeiro contêiner.

1. Rodando nosso primeiro contêiner e entendendo seu comando

Neste tópico iremos rodar nosso primeiro contêiner e entender o comando docker run.

Sintaxe do comando que irá criar um contêiner e exibir em nosso console o hello-world.

$ docker container run hello-world

Vamos entender o comando:

  • docker: É o executor do comando
  • container: Indica que o comando irá atuar em um contêiner
  • run: É a porta de entrada do docker e irá realizar 4 (quatro) operações:
    1. Baixa a imagem (se não encontrada localmente) $ docker image pull
    2. Cria o contêiner docker container create
    3. Inicializa o contêiner docker container start
    4. Uso do modo interativo e executa o comando docker container execute
  • hello-world: Imagem utilizada para a criação do contêiner.

Observando o console / terminal onde executamos o comando, teremos um resultado similar a este:

docker-hello-world.png

Perfeito! Conseguimos realizar a criação de um contêiner executando a imagem hello-world. Mas como podemos visualizar os contêiners criados? Basta executarmos o comando a seguir:

# Lista todos os contêiners criados:
$ docker container ps -a

Teremos um resultado similar a este, vamos entender as colunas apresentadas:

docker-ps-a.png

  • CONTAINER ID: Id de registro do contêiner.
  • IMAGE: Imagem utilizada para a criação do contêiner
  • COMMAND: Comando executado pelo contêiner
  • CREATED: Tempo de criação
  • STATUS: Status do contêiner
  • PORTS: Portas expostas do contêiner. Neste caso não temos nenhuma disponibilizada
  • NAMES: Nome do contêiner. Como não atribuímos um nome, o Docker se encarrega de nomear o mesmo.

Agora listaremos as imagens baixadas. Neste caso, teremos inicialmente apenas a imagem hello-world listada. Para listar as imagens, execute o comando a seguir:

# Lista todas as imagens baixadas:
$ docker images

Teremos um resultado similar a este, vamos enetnder as colunas apresentadas:

docker-images.png

  • REPOSITORY: Nome da imagem (obtida do repositório)
  • TAG: Versão
  • IMAGE ID: Id da imagem criada
  • CREATED: Tempo / Data criação da imagem
  • SIZE: Tamanho da imagem

2. Criando e interagindo com nosso contêiner a partir de uma imagem do Docker Hub.

O Docker Hub é um explorador de imagens. Nele podemos encotrar imagens que atendem a diversas finalidades e necessidades. Iremos utilizar a imagem alpine para este exemplo. A imagem alpine é vastamente utilizada no Docker por conter apenas o core do sistema operacional Linux, onde a maioria das aplicações necessitam para serem executadas. Vale a pena visitar a página do Docker Hub para explorar e se ambientar.

Baixando a imagem localmente

Se quisermos apenas baixar a imagem, utilizaremos o comando a seguir. Também será demosntrado especificar uma TAG (versão) de nossa preferência para baixarmos a imagem:

# Sintaxe padrão para baixar imagens
$ docker image pull <image>

# Baixando imagem sem identificar TAG (versão)
$ docker image pull alpine

# Baixando imagem identificando TAG (versão)
$ docker image pull alpine:3.20.0

A imagem abaixo demonstra a execução do download na imagem sem especificar a TAG (versão) e especificando a TAG. Após o download das mesmas, foi utilizado o comando para listarmos as imagens e verificarmos seu resultado, que será similar a este:

docker-pull.png

Rodando um contêiner com a imagem alpine executando um comando:

Como pudermos ver logo acima no artigo, utilizaremos o comando docker run para rodarmos o contêiner. Neste caso, vamos enviar o comando ls -l para listarmos o conteúdo da imagem. Perceba que o comando ls -l será executado dentro do contêiner. Vamos rodar o comando a seguir:

$ docker container run alpine ls -l

Alguns pontos a respeito desta execução:

  1. Utilizamos a imagem que baixamos anteriormente alpine
  2. Criamos um contêiner com esta imagem e executamos o comando ls -l para listarmos seu conteúdo
  3. Após a execução do comando, podemos perceber que o contêiner não está mais em execução, ou seja, ele executa o comando e encerra seu ciclo.

Podemos ver na imagem abaixo a execução de criação de contêiner e a listagem da imagem. Após a listagem, foi utilizado o comando docker container ps -a para vermos o contêiner criado, percebermos que o mesmo está parado e o comando do mesmo é ls -l.

docker-ls-l.png

Rodando e interagindo com um contêiner e imagem alpine via terminal:

Aproveitando a imagem alpine que baixamos, vamos rodar um contêiner e acessar o terminal do mesmo. Vamos seguir os passos abaixo para interagirmos com o terminal do contêiner que está rodando:

  • Executar o contêiner de forma interativa.

Para executarmos o contêiner de forma interativa, vamos executar o comando a seguir:

$ docker container run -it alpine

Vamos entender o comando:

  • i: Indica a forma interativa
  • t: Abre o terminal

Desta forma, o contêiner será executado e estará pronto para recever comandos, como demonstrado na imagem abaixo:

docker-run-it.png

  • Listar o conteúdo do contêiner / Criar um arquivo txt / Listar novamente o conteúdo para verificarmos a criação do arquivo txt / Sairmos do contêiner
$ ls -l
$ echo 'txt no alpine' > texto_alpine.txt
$ ls -l
$ exit

Após a execução destes comandos, teremos um resultado similar a este e estaremos preparados para encerrar o contêiner.

interacao.png

  • Pararmos o contêiner.

Para pararmos o contêiner, seguimos com um dos comandos a seguir:

$ docker container stop <CONTAINER ID> 
$ docker container stop <NAMES>

Além de pararmos o contêiner via CONTAINER ID (não é necessário inserir o Id completo, os 5 primeiros caracteres já são o suficiente), podemos parar também utilizando o nome do mesmo. Teremos um resultado como demonstrado abaixo:

Observação: Para demonstrar a interrupção do contêiner, foi utilizado o comando docker ps para exibir que o mesmo ainda está ativo.

docker-stop.png

  • Executar o contêiner novamente com a instrução ls -l para verificarmos se o mesmo continua com o arquivo criado.

Para executarmos um contêiner que está parado, executamos um dos comandos a seguir:

$ docker container start <CONTAINER ID> 
$ docker container start <NAMES>

Para demonstrar o início do contêiner, foi utilizado o start via <CONTAINER ID> (apenas 4 caracteres). Para demonstrar que o mesmo está em execução, foi utilizado o comando docker ps -a para listar todos os contêiners e que o mesmo está com o STATUS Up.

Para executarmos um comando em um contêiner que está em execução, seguimos com o comando a seguir:

# Sintaxe geral para a execução
$ docker container exec <CONTAINER ID> <COMANDO>
$ docker container exec 76d6 ls -l

Teremos um resultado similiar ao demonstrado a seguir:

docker-start-ls.png

  • Pararmos novamente o contêiner / Excluir o contêiner / Excluir a imagem

Após todos os processos, iremos parar novamente o contêiner, excluir o mesmo assim como excluir a imagem. Seguimos com os comandos a seguir (Lembrando que podemos optar entre realizar as operações via NAMES ou CONTAINER ID).

# Stop no container
$ docker container stop <CONTAINER ID> 
$ docker container stop <NAMES>

# Excluir o container
$ docker container rm <CONTAINER ID> 
$ docker container rm <NAMES>

# Excluir a imagem
$ docker image rm <IMAGE ID> 
$ docker image rm <NAMES>

Com a execução dos comandos, teremos excluído contêiners e imagens uma vez utilizados.

docker-rm.png

3. Resumo - Comandos Docker listados neste artigo

Segue atividades que enfrentamos neste artigo:

  • Validamos a instalação do Docker conhecendo alguns comandos simples para exibir versão ou help;
  • Rodamos um contêiner entendendo seu comando;
  • Listamos contêiners
  • Baixamos imagens
  • Listamos imagens
  • Interagimos com contêiner via terminal
  • Adicionamos um arquivo a um contêiner
  • Paramos e reiniciamos contêiners
  • Excluimos contêiners e imagens
Comando Finalidade
docker --version Exibe a versão do Docker instalado em sua estação
docker --help Exibe help para auxílio em execução de comandos
docker run --help Exemplo de utilização do comando help para o comando run
docker container run hello-world Cria um contêiner e realiza a execução com a imagem hello-world
docker container ps -a Lista todos os contêiners criados localmente
docker images Lista imagens baixadas localmente
docker image pull <image> Baixa imagem de repositório
docker container run alpine ls -l Executa um contêiner com um comando
docker container run -it alpine Executa o contêiner de forma interativa (terminal)
docker container stop <CONTAINER ID> docker container stop <NAMES> Interrompe execução do contêiner
docker container start <CONTAINER ID> docker container start <NAMES> Interrompe execução do contêiner
docker container exec <CONTAINER ID> <COMANDO> Executa um comando em um contêiner que está ativo
docker container rm <CONTAINER ID> docker container rm <NAMES> Realiza a exclusão de um contêiner
docker image rm <IMAGE ID> docker image rm <NAMES> Realiza a exclusão de uma imagem

Espero que tenha gostado do conteúdo!

Nos vemos na sequencia da trilha de Docker ou em outro artigo por aqui.

Se você gostou do conteúdo, deixe um comentário ou uma reação para apoiar o projeto! Compartilhe com alguém e ajude a divulgar!

[ ]´s

Degas