segunda-feira, 2 de novembro de 2020

Resumo dos principais comandos Docker

 

Resumo dos principais comandos Docker para acesso rápido:


  • docker ps - exibe todos os containers em execução no momento, equivale ao "docker container ls". Temos algumas opções interessantes nesse comando:
    • -a -> exibe todos os containers, independentemente de estarem em execução ou não.
    • -q -> exibe apenas os ids dos contaners.
    • -s -> exibe o tamanho do volume.
  • docker exec -it nome_ou_id_do_container comando - executa um comando dentro do container de forma interativa (-it). Ex: docker exec -it nome_ou_id bash -> inicia um bash dentro do container especificado.
  • docker run -it NOME_DA_IMAGEM - conecta o terminal que estamos utilizando com o do container.
  • docker stop ID_CONTAINER - interrompe o container com id em questão. Mata os processos internos.
  • docker stop $(docker ps -q) - interrompe todos os containers.
  • docker start ID_CONTAINER - inicia o container com id em questão.
  • docker pause ID_CONTAINER - pausa o container com id em questão. Não mata os processos internos.
  • docker unpause ID_CONTAINER - volta a execução do container pausado com id em questão, com os mesmos processos internos.
  • docker start -a -i ID_CONTAINER - inicia o container com id em questão e integra os terminais, além de permitir interação entre ambos. (-a de attach). 
  • docker attach ID_CONTAINER - Dessa forma vc acessa um terminal já em execução. Para "desanexar" o container do terminal e ele continuar em background use CTRL+P,  CTRL+Q.
Apagando imagens e contaners
  • docker rm ID_CONTAINER - remove o container com id em questão. Se estiver rodando pode usar o --force no final do comando.
  • docker container prune - remove todos os containers que estão parados.
  • docker rmi NOME_DA_IMAGEM - remove a imagem passada como parâmetro.
  • docker container prune - remove todos os containers parados.
  • docker images prune -a - remove todas as imagens não ligadas a containers.
Portas e variáveis de ambiente
  • docker run -d -P --name NOME dockersamples/static-site - ao executar, dá um nome ao container(--name). A opção -d é de "detached", para que o terminal não fique preso no container. O -P (maiúsculo) atrela as portas internas do container à portas aleatórias na minha máquina local para poder acessar.
  • docker run -d -p 12345:80 dockersamples/static-site - define uma porta específica da nossa máquina (12345) para ser atribuída à porta 80 do container.
  • docker port ID_CONTAINER - mostra as portas mapeadas.
  •  docker run -d -P -e AUTHOR="Fulano" dockersamples/static-site - o -e define uma variável de ambiente AUTHOR com o valor Fulano no container criado. (Neste caso, a imagem usada espera o valor da variável de ambiente.)
Anexando DISCO(Volume)
  • docker run -v "[CAMINHO_VOLUME_LOCAL]:CAMINHO_VOLUME_CONTAINER" -w /var/www NOME_DA_IMAGEM - cria um container com volume (-v) no respectivo caminho do container, caso seja especificado um caminho local monta o volume local no volume do container. O -w especifica o diretório que o Docker vai iniciar o container, muito útil para quando se precisa executar certos comandos ao iniciar um servidor por exemplo.
  • docker run --mount type=bind,source=[CAMINHO_VOLUME_LOCAL], target=[CAMINHO_VOLUME_CONTAINER] NOME_DA_IMAGEM - cria um container com um volume usando o mount. Essa forma faz um bind do contaner para um local da nossa maquina.
  • docker volume create NOME_DO_VOLUME - cria um volume gerenciado pelo Docker. É parecido com associar uma pasta diretamente ao contaner, mas assim ele fica salvo em um lugar específico do Docker(dentro de /var/lib/docker/volumes) e pode ser trabalhado com alguns comandos do docker. 
  • docker volume ls - retorna a lista de volumes criados.
  • docker run --mount source=[NOME_DO_VOLUME], target=[CAMINHO_VOLUME_CONTAINER] NOME_DA_IMAGEM - cria o contaner com o volume gerenciado, note que nesse caso o type não precisou ser especificado, apenas o nome do volume gerenciado e o destino.
  • docker run --tmpfs=CAMINHO/NOME_DA_PASTA - cria pastas temporárias no volume. Algumas aplicações podem fazer bastante uso de pastas temporárias. Funciona com Linux apenas.
Informações
  • docker inspect ID_CONTAINER - retorna diversas informações sobre o container.
  • docker history ID_CONTAINER - retorna as camadas do container.

Build e publicação

  • docker build -f Dockerfile .  - cria uma imagem a partir de um Dockerfile passando o diretório atual (".").
  • docker build -f CAMINHO_DOCKERFILE/Dockerfile -t NOME_USUARIO/NOME_IMAGEM .  - constrói e nomeia uma imagem não-oficial informando o caminho para o Dockerfile. O ponto (".") indica o caminho do Dockerfile (diretório atual no caso).
  • docker login - inicia o processo de login no Docker Hub.
  • docker push NOME_USUARIO/NOME_IMAGEM:versao - envia a imagem criada para o Docker Hub.
  • docker pull NOME_USUARIO/NOME_IMAGEM - baixa a imagem desejada do Docker Hub.
  • docker tag NOME_USUARIO/NOME_IMAGEM:versao NOVO_NOME_USU/NOVO_NOME_IMG:versao - muda o nome da imagem, isso pode ser necessário para fazer o upload de imagens no repositório.
Rede

  • docker network ls - mostra as redes disponíveis. Embora já exista uma rede bridge, para termos controle somos obrigados a criar a nossa.
  • docker network create --driver bridge NOME_DA_REDE - cria uma rede especificando o driver desejado.
  • docker run -it --name NOME_CONTAINER --network NOME_DA_REDE NOME_IMAGEM - cria um container especificando seu nome e qual rede deverá ser usada. Quando uma rede é usada e o container tem um nome, o Docker se encarrega de fazer o DNS entre os nós da rede, podendo assim chamarmos as máquinas pelos nomes atribuídos.
  • hostname -i - mostra o ip atribuído ao container pelo docker (funciona apenas dentro do container).
Docker Compose

  • docker-compose build - Realiza o build dos serviços relacionados ao arquivo docker-compose.yml, assim como verifica a sua sintaxe.
  • docker-compose up -d - Sobe todos os containers relacionados ao docker-compose, desde que o build já tenha sido executado.
  • docker-compose down - Para todos os serviços em execução que estejam relacionados ao arquivo docker-compose.yml.
  • docker-compose ps - lista os serviços que estão rodando.
Atenção! Nas versões mais novas foi retirado o hífen ("-") entre as palavras "docker  compose" nos comandos. 

Exemplo de arquivo docker-compose: docker-compose.yml


OBS: para acessar as máquinas caso esteja usando o Docker Tool Box ao invés do Docker for Windows é preciso ver o IP da máquina. Isso pode ser feito com o comando: docker-machine ip.

OBS2: $docker ps -q  retorna os ids dos containers.


Nenhum comentário:

Postar um comentário