Docker básico

Objetivo do módulo

Hero with bird

Ao final do módulo você irá aprender:

  • Instalar o docker
  • Explicar sobre os componentes do docker
  • Como utilizar os priocipais comamndos do docker

Instalando o docker

Acesse o endereço da instalação do Docker e execute o arquivo e faça o processo de instalação padrão.

Após o processo de instalação acesse o menu iniciar do windows e procure o aplicativo Docker Desktop e execute-o.

Na barra de notificações irá aparecer um icone do docker com o status "Docker is starting", aguarde até ficar com o status "Docker is running".

Abra o Prompt de Comando ou o Powershell e execute o seguinte comando para confirmar se o docker está funcionando.

docker version

Hello World

Vamos iniciar a nossa jornada com o docker fazendo o nosso primeiro Hello World executando o seguinte comando:

docker run hello-world

Docker Components

  • Docker Client: é principal maneira que os usuários interagem com o docker.

  • Docker Host: O Docker possui uma estrutura de cliente/servidor, e tais containers são armazenados em um servidor, chamado de Docker host ou Docker server. O servidor do Docker é responsável por todas as ações relacionadas aos containers. Docker host pode ser local ou remoto.

  • Docker Daemon: é responsável por receber comandos do client via Command Line ou APIs do tipo REST.

  • Imagens: são arquivos que contém todo o conteúdo e estrutura de sistemas operacionais. Elas são a base de construção de containers no Docker.

  • Containers: são os ambientes de execução do Docker, criados a partir de imagens. De forma simplificada, é uma sandbox para processos(uma sandbox, ou "caixa de areia", é um ambiente de teste, que isola o ambiente de produção e o repositório de mudanças não testadas no código e experimentos). Uma imagem é como um template de classe, e containers seriam instâncias dessas classes(instanciados na uma camada que permite gravação da imagem).

  • Registry: é um repositório de imagens, controla o acesso e facilita a distribuição das imagens.

Existem várias opções no mercado como por exemplo: Container Registry da Google Cloud, Azure Container Registry, Harbor (Solução open-source para nunvem privada) entre outras soluções. O mais conhecido é o Dockerhub da empresa Docker Inc, que oferece uma conta gratuita para projetos abertos.

Comandos básicos

Executar uma imagem

docker run NOME_DA_IMAGEM

Lista de opções e atributos

OpçãoDescrição
--name (NOME DO CONTAINER)Definie o nome do container. Ex.: docker run --name api
-e (CHAVE)=(VALOR)Adiciona as variáveis de ambiente -e. Ex.: -e NODE_ENV=prod
-p (PORTA):(PORTA)Define os valores das portas a serem utilizadas (PORTA EXTERNA):(PORTA INTERNA). Ex.: -p 8080:8080
-dExecuta em modo daemon

Listar as imagens

docker images

Listar containers

Mostra o consumo de recursos do container docker:

docker ps

Utilização de recursos

Mostra o consumo de recursos do container docker:

docker stats

Visualização de Logs

Mostra o consumo de recursos do container docker:

docker logs NOME_DO_CONTAINER

Parar um container

docker stop NOME_DO_CONTAINER

Remover um container

docker rm NOME_DO_CONTAINER

Remover uma imagem

docker image rmi ID_DA_IMAGEM

ComandoDescriçãoObsevações
docker imagesLista as imagens utilizadas
docker run (NOME_DA_IMAGEM)Executa uma imagemParamentros utilizados: definição do nome --name, expecificação da porta -p (Ex.: -p 8080:8080), variáveis de ambiente -e (Ex.: -e NODE_ENV=prod) e executa em modo daemon -d
docker pslista a imagens ativasSe utilizar o parametro -a listar todas as images incluindo as images que encerraram o seu ciclo de vida
docker statsMostra o consumo de recursos do container docker
docker logs (NOME_DA_IMAGEM)Mostra o log do container
docker rm (NOME_DA_IMAGEM)Remove um container específicoExcutar o comando: docker ps para indetificar o nome do container
docker image rmi (ID_DA_IMAGEM)Remove uma imagem específicaExcutar o comando: docker images –a para indetificar o id da imagem
docker exec -it (NOME_DA_IMAGEM) (COMANDO_DESEJADO)Executa um comando especifico do containerÉ bastante comum utilizar o comando bash para interagir dentro do container, exemplo: docker exec -it app_php bash. O parametro -it ativa o modo interativo