Docker - Parte 2: Executando e interagindo com um contêiner a partir de uma imagem do Docker Hub
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
# Podemos usar o help para entendermos melhor os comandos.
$ docker --help
# Para utilizar o help em um comando,
vamos utilizar o comando run como exempo:
$ docker run --help
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:
- Baixa a imagem (se não encontrada localmente)
$ docker image pull
- Cria o contêiner
docker container create
- Inicializa o contêiner
docker container start
- Uso do modo interativo e executa o comando
docker container execute
- Baixa a imagem (se não encontrada localmente)
- 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:
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:
- 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:
- 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:
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:
- Utilizamos a imagem que baixamos anteriormente
alpine
- Criamos um contêiner com esta imagem e executamos o comando
ls -l
para listarmos seu conteúdo - 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
.
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:
- 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.
- 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.
- 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:
- 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.
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