Skip to content

hemilioaraujo/DockerNotes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

DockerNotes

My DockerNotes

Instalação

Remover instalações antigas

sudo apt-get remove docker docker-engine docker.io containerd runc

Instalando

# Atualiza pacotes
sudo apt-get update;
# Instala dependências
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common;
# Adiciona a chave GPG do docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -;
# Adiciona o repositório oficial
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable";
# Instala docker
sudo apt-get install docker-ce docker-ce-cli containerd.io;
# Verificar instalação
sudo docker run hello-world;

Iniciar serviço

/etc/init.d/docker start;

Desinstalando

# Desinstalando e removendo configurações
sudo apt-get purge docker-ce docker-ce-cli containerd.io;

# Excluindo images, containers e volumes
sudo rm -rf /var/lib/docker;

Criar container

# Estrutura básica
sudo docker run -i -t <distro>:<versão> <processo_a_executar_ao_iniciar>;

# Exemplo
sudo docker run -i -t ubuntu:14.10 /bin/bash;

# Caso a imagem não esteja localmente, ele faz o download
# Para configurar portas de acesso basta adicionar o parâmetro -p <porta_host>:<porta_container>

Parâmetros para a criação de containers

Parâmetro Descrição Exemplo
-it -t aloca terminal que permite acesso -i interatividade com o terminal docker run -it debian
-v cria um diretório compartilhado do host com o container -v /<diretório>
-w Define um diretório padrão ao se conectar via SSH -w /home/application
-p ou --publish Define (bind) as configurações de porta em relação host/container. -p <porta_host>:<porta_container>
--link Cria um link entre containers. docker run -it --name <nome_do_container> --link <container_id_ou_name>:<alias>;
--name Dá um nome ao container. docker run -it --name <nome_do_container> <dist>:<versão>;
-m Define o limite de memória que o container usa do host -m 512M
--cpu-shares Define o limite de uso de CPU. Usando proporção entre os containers existentes. Ex. Container A 1024, B 512, C 512 usarão respectivamente 50%, 25% e 25% da CPU host. --cpu-shares 512
-e Este parâmetro é utilizado quando se necessita passar variáveis de ambiente para o container -e POSTGRESQL_USER=docker
--volumes-from Utilizado para importar volume de outro container. --volume-from <nome_container>
--restart Este comando informa que o container e reiniciado quando por algum motivo ele parar --restart=always
-d Roda o container como daemon ou processo -d
--dns Parâmetro para informar o servidor dns utilizado --dns 8.8.8.8
--hostname Parâmetro para definir o hostname do container internamente no docker --hostname biruleibe
--expose Expõe somente a porta do container se fazer redirect pelo host --expose 80
--mac-address Define um MAC específico para o container --mac-address 00:1D:7D:B2:34:F9

Comandos Importantes

# Listar containers em execução
sudo docker ps;

# Listar todos os containers
sudo docker ps -l;

# Listar imagens disponíveis
sudo docker images;

# Excluir imagem
sudo docker image rm <image_id>;
# ou
sudo docker rmi <image_id>;

# Fazer poll de uma imagem do DockerHub
sudo docker poll <imagem_do_hub>;

# Excluir container
sudo docker rm <id>;

# Iniciar container
sudo docker start <id>

# Sair do container e manter rodando
ctrl + p;
ctrl + q;

# Parar container
sudo docker stop <id>;

# Pausar container
sudo docker pause <id>;

# Despausar container
sudo docker unpause <id>;

# Acessar o container
sudo docker attach <id>;

# Verificar alterações de arquivos do container
sudo docker diff <id>;

# Commitar alterações na imagem
sudo docker commit <id> <nome_que_quiser>:<versão_ex: 1.0>;

# Para container
exit;

# Executar comandos no docker direto do host
sudo docker exec <id> <comando>;

# Todas informações do container
sudo docker inspect <id>;

# Estatisticas de uso
sudo docker stats;

# Ver log do container
sudo docker log <id>;

# Listar processos em execução no container
sudo docker top <id>;

# Criar --link entre containers
sudo docker run -it --name <nome_do_container> --link <container_id_ou_name>:<alias>;

# Remove todos os contêineres não usados
docker container prune;

# Remove todas as imagens não usadas
docker image prune;

# Remove todos os volumes não usados
docker volume prune;

# Remove todas as redes não utilizadas
docker network prune;

Docker UPDATE

O docker update server para modificar o setup de um container em execução

# Atualizando o limite de memória
docker update -m 256M <id>;

Localização de arquivos importantes

Images, containers, volumes, and networks

/var/lib/docker/

Dockerfile

Criando Dockerfile para automatizar o build do container.

Observações

  • O nome do arquivo é Dockerfile(Com D maiúsculo).
  • O comando de build tem que receber o diretório onde o Dockerfile está.

Parâmetros

# Qual imagem será utilizada(primeiro parâmetro)
FROM <distro>:<versão>

# Quem criou o container
MAINTAINER <nome_ou_email>

# Executar comandos
# Para cada execução uma nova camada
RUN <comandos_desejados>

# Enviar arquivo ou diretório do host para o container(inclusive .tar)
ADD <arquivo> <diretório_do_container>

# Parâmetros para o Entrypoint
CMD

# Entripoint
ENTRYPOINT

# Adicionar metadatas (informações)
LABEL <nome>="<conteúdo>"

# Copiar arquivos ou diretório do host para o container(.tar exclusivo)
COPY <arquivo> <diretório_do_container>

# Passar variáveis de ambiente
ENV <nome>="<conteúdo>"

# Porta do container disponível
EXPOSE 80

# Usuário default
USER <nome_do_user>

# Diretório de trabalho padrão
WORKDIR /<nome_do_diretório>

# Criar o volume do container
VOLUME /<diretório>

Exemplo mínimo com ubuntu 20.04 e apache2

From ubuntu:20.04
MAINTAINER [email protected]
RUN apt-get update && apt-get install -y apache2 && apt-get clean

Build

# Sem especificação do nome e tag da imagem
sudo docker build .

# Com especificação do nome e tag da imagem
sudo docker build -t <imagem>:<tag>;

Compartilhando diretórios

Compartilhamento com host

Criar container com compartilhamento simples

sudo docker run -ti -v /<nome_diretório> <imagem>;

Desta forma, o diretório pode ser encontrado via comando inspect:

sudo docker inspect -f {{.Mounts}} <id_container>;

Criar container com compartilhamento definindo diretórios

docker run -ti -v /<diretório_host>:/<volume_container> <imagem>;

Criar container com compartilhamento de outro container

docker run --name <nome_container> --volumes-from <container_volume_compartilhado> <imagem>;

Referências

  • LINUXtips - Playlist Descomplicando Docker

  • LINUXtips - Curso Descomplicando Docker V1

  • devwikiblog - Utilizando Docker em ambiente de desenvolvimento

About

My DockerNotes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published