docker images: visualizar todas as imagens Docker presentes na máquina;docker pull <nome-da-imagem>:<tag>?: baixar uma imagem do Docker Hub sem necessariamente executar esta imagem como um container;docker rmi <nome/id-da-imagem>: remover uma imagem Docker (acrônimo das palavras ReMover Imagem);docker build: construir uma imagem a partir de um Dockerfile;
docker <comando> <subcomando> <parâmetros>: (Os <parâmetros> são opcionais na execução dos comandos);docker container ls: listar todos os containers em execução no momento na máquina;docker container ls -a: exibe também containers que foram parados ou que terminaram sua execução;- Ou
docker ps -a
- Ou
docker container run <flags>? <imagem>:<tag> <argumentos>?: comando padrão para subir um containerdocker rm <nome-do-container>: remove pelo nome os containers parados ou com execução terminada;docker rm <id-do-container>: remove pelo id;docker rm -f <nome/id-do-container>: apaga um container pelo seu nome ou id, até mesmo se ele estiver ativo (utilizando a flag -f para forçar o comando);docker container start <nome/id-do-container>: iniciar um container já criado e parado na lista;docker container stop <nome/id-do-container>: comando que força o container a terminar sua execução atual;docker logs <flags> <nome-do-container>: comando que permite ver informações (logs, erros, etc) que o programa em segundo plano está executando ou ainda logs de um container parado (execução finalizada)docker container prune: remove todos os containers inativos do computador;docker top <nome-do-container>: verificar a lista de processos de um container específico;docker exec -it <nome-do-container> <comando-a-ser-executado>: Executa um comando em um contêiner em execução.<comando-a-ser-executado>: exemplo: programash(programa de terminal linux), permite simular um acesso de terminal dentro do container que já está em execução;
docker attach <nome/id-do-container>: acessar dentro do container e se conectar ao seu terminal, caso esse container esteja executando um processo interativo;docker cp index.js <nome-do-container>:/pasta: copiar o arquivo index.js do computador para a pasta do container;docker create <imagem>:<tag>?: cria um novo container, sem inicializá-lo.
Exemplo:
docker container run alpine:3.14 echo "Hello World": (docker container run <flags>? <imagem>:<tag> <argumentos>?)- o run cria um novo container;
- Os parâmetros
<flags>?e<argumentos>?são opcionais; - os parâmetros
<imagem>:<tag>são a imagem Docker e a versão, exemplo alpine 3.14;
Principais Flags
--name <nome-da-sua-escolha>: flag para dar um nome específico ao container criado, em vez de obter um nome aleatório do Docker;--rm: flag para que um container seja removido ao final da sua execução (Modo “auto-remover”);-dou--detach: flag para que a execução do container ocorra em segundo plano, ou seja, embora não esteja visível, o container executará de forma assíncrona;-it:- Flag
-t: solicita a criação de uma sessão de terminal; - Flag
-i: necessária para que a sessão seja interativa;
- Flag
-v <caminho-da-pasta-com-arquivo-local>:<caminho-do-container>: criar um volume a ser compartilhado entre o computador local e o container.-e <nome_variavel>=<valor>: informar as variáveis de ambiente.
Comandos dentro de uma sessão interativa de terminal:
ps aux: lista todos os processos em execução no momento;exit: sair da do terminal do container.
- Imagem: aplicação empacotada com todas as dependências necessárias já instaladas dentro dela.
- Container: processo totalmente isolado que representa a execução de uma imagem já construída anteriormente. Pode-se ter vários containers reproduzindo uma mesma imagem Docker.
- Dockerfile: arquivo que contém as instruções necessárias para construir uma imagem Docker.
- Principais palavras reservadas, utilizadas dentro do arquivo:
FROM <nome-da-imagem>:<tag>?: nome da imagem base para construção da nova imagem;FROM <nome-da-imagem>:<tag>? AS <nome-do-estagio>: serve para nomear o estágio atual durante o build (a última referência de FROM é a imagem final);WORKDIR /pasta: indica qual é pasta atual de trabalho dentro da imagem;COPY index.html /caminho/da/imagem: copiar um arquivo no computador local e colocá-lo dentro da imagem, no caminho especificado à frente;- Flag
--from=nome-do-estagio-anterior /caminho/do/arquivo /caminho/estagio/atual: possui a capacidade de copiar arquivos entre os estágios, indica que deve-se copiar o seguinte arquivo ou pasta de um estágio para o estágio atual;
- Flag
EXPOSE port: dizer em qual porta a aplicação vai rodar (por padrão é 80), esse comando não abre nenhuma porta, é apenas para fins de documentação;ENV key value: setar variáveis de ambiente que podem ser utilizadas dentro do containerRUN: indica que o comando à frente deve ser executado imediatamente, durante o processo de build;ENTRYPOINT: indica qual comando deve ser executado ao iniciar a imagem como um container;CMD ["echo", "hello world"] ou CMD echo "hello world": sugestão de comando a ser executado ao iniciar essa imagem como um container (aceita uma lista de parâmetros ou apenas os comandos). Pode ser substituído ao executar o comandodocker run <nome-da-imagem> <comando> <argumentoX>;
- No terminal:
docker build <flags>? -t <nome-da-imagem>:<tag>? <contexto>: Construir a imagem-t: indica qual será o nome da imagem;<contexto>: caminho de pasta para o Docker se basear para processar o arquivo Dockerfile. Geralmente utiliza-se apenas., que indica a pasta atual.
docker run -d -p 1234:80 --name <nome-do-novo-container> <nome-da-minha-imagem>: Executar um novo container com a imagem criada-p 1234:80: solicita ao Docker que faça um mapeamento da porta 1234 do nosso computador para a porta 80 da rede do container (faz o bind das portas)-P: com P maiúsculo, escolhe uma porta da máquina aleatoriamente para, ao acessar o localhost naquela porta específica, redirecionar para a porta 80 do container.
- Dentro do arquivo
docker-compose.yaml:
version: "3"
services:
frontend:
build: frontend/
restart: always
ports:
- 3000:3000
depends_on:
- backend
volumes:
- ./logs:/var/log/frontend
networks:
- rede-virtual-1
backend:
build: backend/
restart: always
ports:
- 3001:3001
environment:
- DB_HOST=database
depends_on:
- database
networks:
- rede-virtual-1
- rede-virtual-2
database:
image: betrybe/docker-compose-example-database:v1
restart: always
volumes:
-dados-do-banco:data/db
networks:
- rede-virtual-2
volumes:
dados-do-banco:
networks:
rede-virtual-1:
rede-virtual-2:version: todo arquivo deve iniciar com a chave version, que indica a versão do Arquivo Compose;services: Definir os serviços e especificar a imagem de cada um:image: <nome-da-imagem>: imagem Docker pronta, seja local ou a ser baixada;build: pasta/: pasta contendo um arquivo Dockerfile a partir do qual o Compose vai executar o comando docker build automaticamente;
ports: - portaLocal:portaContainer: mapear as portas entre o computador local e as portas do container;restart: <comando>: Política de reinicialização: através da chave restart.no: o container não reiniciará automaticamente (padrão);on-failure: o container será reiniciado caso ocorra alguma falha apontada pelo exit code (diferente de zero);always: sempre que o serviço parar, seja por uma falha ou porque ele simplesmente finalizou sua execução, ele deverá ser reiniciado;unless-stopped: o container sempre será reiniciado, a menos que se utilize o comando docker stop manualmente.
environment: - NOME_DA_VARIÁVEL=VALOR: criar variáveis de ambiente dentro dos containers;depends_on: - <nome-do-serviço>: lista de serviços que o Compose deve executar antes de executar o serviço atual;volumes::- ao final do arquivo: especifica para o Compose que ele deve criar um volume virtual com o nome passado como argumento.
- no frontend: mapeia uma pasta do computador local para uma pasta dentro do serviço de front-end:
caminho/no/computador:caminho/no/container - no database:
<nome-do-volume>:<caminho-no-container-para-montar>
networks:: redes virtuais que permitem criar isolamento entre os serviços.- ao final do arquivo: declara-se o nome de uma nova rede virtual por linha;
- dentro de cada serviço: declara-se a rede para permitir a comunicação direta entre os serviços;
container_name: <nome-do-container>: nomear o container a ser criado;command: <comando>: executar o comando ao iniciar o container (mesma função do CMD no Dockerfile);
- No terminal, dentro da pasta que contém o arquivo docker-compose.yaml:
docker-compose up -d: subir todos os serviço.docker-compose ps: verificar o status dos serviços.docker-compose up -d --build: reconstruir as Imagens Docker após alguma alteração.docker-compose down: parar a execução de todos os serviços.docker-compose up <serviço>: subir serviços específicos.docker-compose logs <nome-do-serviço>: visualizar os logs de um dos serviços.docker-compose up --scale service=<número-de-replicas>: configurar a quantidade de réplicas (cópias de containers) para um mesmo serviço.
Demais comandos Docker na documentação oficial: https://docs.docker.com/engine/reference/commandline/docker/. Todos os direitos reservados à documentação oficial do Docker e à Trybe, cujos materiais serviram de base para a construção deste gist.
selo de qualidade Geo Otoni ©