Cheat Sheet Docker
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