Ir para o conteúdo principal

Cheat Sheet Docker

docker comandos cheat sheet
Alfredo Castro
Autor
Alfredo Castro
AWS Solutions Architect | AWS x3 | LPI x2 | CompTIA Linux+

Instalar o Docker

curl -fsSL https://get.docker.com/ | sh

Verificar versão do Docker

docker version

Instalar docker-compose - Opção 01

apt-get install docker-compose

Instalar docker-compose - Opção 02

curl -L "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Verificar versão do docker-compose

docker-compose --version

Verificar containers em execução

docker ps
# Ou:
docker container ls

Verificar containers em execução/parados

docker container ls -a

Executar o container como terminal interactive

docker container run -ti IMAGE_NAME

# Ex:
docker container run -ti ubuntu

Sair do terminal interactive sem matar o container

CTRL+P+Q

Retornar ao terminal interactive

docker container attach CONTAINER_ID

Executar o container como daemon

docker container run -d IMAGE_NAME

# Ex:
docker container run -d nginx

Executar o container como daemon e limitando RAM e CPU

docker container run -d -m 128M --cpus 0.5 IMAGE_NAME

# Ex:
docker container run -d -m 128M --cpus 0.5 nginx

Alterar configurações do container

docker container update -m 512M --cpus 1 CONTAINER_ID

# Ex:
docker container update -m 512M --cpus 1 1f8ae11d4d4f

Verificar em realtime a utilização dos recursos dos containers em docker

docker stats

Executar o container como daemon e adicionar um apelido

docker container run -d --name APELIDO IMAGE_NAME

# Ex:
docker container run -d --name SRVWEB nginx

Executar o container como daemon e mapear uma porta

docker container run -d -p 80:80 IMAGE_NAME

# Ex:
docker container run -d -p 80:80 nginx

Executar comandos diretamente no container

docker container exec -ti CONTAINER_ID COMANDO

# Ex:
docker container exec -ti 1f8ae11d4d4f ls /var/
# Ou:
docker container exec -ti 1f8ae11d4d4f bash

Startar/Stopar/Reiniciar um container

docker container start CONTAINER_ID
# Ou:
docker container stop CONTAINER_ID
# Ou:
docker container restart CONTAINER_ID

# Ex:
docker container start 1f8ae11d4d4f
# Ou:
docker container stop 1f8ae11d4d4f
# Ou:
docker container restart 1f8ae11d4d4f

JSON com detalhes do container

docker container inspect CONTAINER_ID

# Ex:
docker container inspect 1f8ae11d4d4f

Verificar logs (utilizar -f para visualização dinâmica)

docker container logs CONTAINER_ID

# Ex:
docker container logs 1f8ae11d4d4f

Remover um container (utilizar -f para forçar)

docker container rm CONTAINER_ID

# Ex:
docker container rm 1f8ae11d4d4f

Informações de uso de hardware

docker container stats CONTAINER_ID

# Ex:
docker container stats 1f8ae11d4d4f

Processos em execução dentro do container

docker container top CONTAINER_ID

# Ex:
docker container top 1f8ae11d4d4f

Verificar todas as imagens baixas

docker image ls

Primeiro Dockerfile

vim /root/first/Dockerfile

FROM ubuntu

LABEL app="site-alfredo2"

ENV URL="alfredo.com.br"
ENV url2="www.alfredo.com.br"

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install apache2 -y && apt-get clean
RUN echo "Alfredoooooo alfredo.com.br" > /var/www/html/index.html

CMD ["apachectl", "-D", "FOREGROUND"]

docker image build -t site-alfredo:1.0 /root/first

Remover uma imagem

docker image rm IMAGE_ID

Remover todas as imagens

docker image prune -a

Subindo um container com um diretório do tipo bind montado

docker container run -d --mount type=bind,src=DIRETÓRIO_ORIGEM,dst=DIRETÓRIO_DESTINO IMAGE_NAME

# Ex:
mkdir /opt/teste
docker container run -d --mount type=bind,src=/opt/teste,dst=/opt/teste ubuntu

Subindo um container com um diretório do tipo bind montado como somente leitura

docker container run -d --mount type=bind,src=DIRETÓRIO_ORIGEM,dst=DIRETÓRIO_DESTINO,ro IMAGE_NAME

# Ex:
mkdir /opt/teste
docker container run -d --mount type=bind,src=/opt/teste,dst=/opt/teste,ro ubuntu

Listar volumes

docker volume ls

Criar um volume

docker volume create NAME_VOLUME

# Ex:
docker volume create wordpress

JSON com detalhes do volume

docker volume inspect NAME_VOLUME

# Ex:
docker volume inspect wordpress

Remover volume

docker volume rm NAME_VOLUME

# Ex:
docker volume rm wordpress

Listar redes

docker network ls

Criar uma rede

docker network create NAME_NETWORK

# Ex:
docker network create wordpress

JSON com detalhes da rede

docker network inspect NAME_NETWORK

# Ex:
docker network inspect wordpress

Remover rede

docker network rm NAME_NETWORK

# Ex:
docker network rm wordpress

Subindo um container com um diretório do tipo volume montado

docker container run -d --mount type=volume,src=NAME_VOLUME,dst=DIRETÓRIO_DESTINO IMAGE_NAME

# Ex:
mkdir /opt/teste
docker container run -d --mount type=volume,src=wordpress,dst=/opt/teste ubuntu

Subindo um container com um diretório do tipo volume montado como somente leitura

docker container run -d --mount type=volume,src=NAME_VOLUME,dst=DIRETÓRIO_DESTINO,ro IMAGE_NAME

# Ex:
mkdir /opt/teste
docker container run -d --mount type=volume,src=wordpress,dst=/opt/teste,ro ubuntu

Remover todos os volumes que não estão sendo utilizados

docker volume prune

Remover todos os containers que não estão rodando

docker container prune

Criando uma imagem

docker image build -t NAME_IMAGE:VERSION DIRETÓRIO_DOCKERFILE

# Ex:
docker image build -t alfredo/apache2:1.0 /root/dockerfiles/apache2/

Habilitar que o container inicei quando o SO reiniciar

docker update --restart=always CONTAINER_ID

# Ex:
docker update --restart=always 1f8ae11d4d4f

Copiar image para um novo nome

docker image tag IMAGE_ID REPOSITORY:VERSION

# Ex:
docker image tag 1f8ae11d4d4f alfredotavio/nginx:1.0

Fazer login no DockerHUB

docker login

Fazer logout no DockerHUB

docker logout

Subir image para o DockerHUB (Primeiro fazer login e definir o repository corretamente LOGIN_NAME/IMAGE_NAME:VERSION - Ex: alfredotavio/nginx:1.0)

docker push LOGIN_NAME/IMAGE_NAME:VERSION

# Ex:
docker push alfredotavio/nginx:1.0

Baixar image do DockerHUB

docker pull LOGIN_NAME/IMAGE_NAME:VERSION

# Ex:
docker pull alfredotavio/nginx:1.0

Registry é um repositório de imagens para dockers

docker container run -d -p 5000:5000 --restart=always --name meu-registry registry:2
docker image tag 1f8ae11d4d4f localhost:5000/nginx:1.0
docker image push localhost:5000/nginx:1.0
docker image pull localhost:5000/nginx:1.0

Ver imagens dentro do container registry

curl localhost:5000/v2/_catalog

Ver as versões das imagens dentro do container registry

curl localhost:5000/v2/IMAGE_NAME/tags/list

Multi-line

RUN apt-get update && \
	apt-get install -y vim \
	curl \
	whois \
	net-tools \
	traceroute \
	tcpdump \
	zip

Utilize o .dockerignore para ignorar a copia de algum arquivo Adicione o .dockerignore no diretório a ser cópiado Adicione todos os arquivos que você deseja ignorar dentro do .dockerignore

touch .dockerignore
echo "modules/*" >> .dockerignore

Adicionar Health Check (Lembrar de instalar o cURL)

HEALTHCHECK --interval=1m --timeout=3s CMD curl -f http://localhost/ || exit 1

Copiar arquivo para dentro do container

docker cp /tmp/teste.sh CONTAINER_ID:/tmp/

Remover containers com status exited por X período (hours/days/weeks/months/years)

docker ps --filter "status=exited" | grep 'hours ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm

Limpar ambiente docker all stopped containers all networks not used by at least one container all images without at least one container associated to them all build cache

docker system prune -a

Remover tudo (Opção 01)

docker container rm -f $(docker container ls -a -q)
docker image rm -f $(docker images -q)
docker volume rm -f $(docker volume ls -q)

Remover tudo (Opção 02)

docker system prune -a --volumes