Skip to content

Instantly share code, notes, and snippets.

@reginadiana
Last active January 7, 2024 20:08
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save reginadiana/37f2f5cdfe43983028ec0c206fa5194a to your computer and use it in GitHub Desktop.
Save reginadiana/37f2f5cdfe43983028ec0c206fa5194a to your computer and use it in GitHub Desktop.
Anotações sobre Docker

Conceitos

Docker é uma ferramenta para criar e manter containers. Ele é responsável por armazenar vários serviços de forma isolada

📚 Arquivo de definição Dockerfile é um arquivo que importa a imagem base, executará os comandos necessários para rodar a aplicação e copiar e os arquivos da aplicação para a imagem modificada.

📚 Arquivo de definição do Docker Compose é um arquivo onde iremos configurar os parametros para executar os containers.

📚 A ideia do container é ser descartável

📚 O Docker não é uma máquina, mas sim um processo em execução

📚 ubuntu:14.04 >> ubuntu é o repositório e 14:04 é a tag

📚 Normalmente temos containers sendo iniciados a partir de uma imagem. Algo diferente disso precisa ser customizado

📚 O resultado de cada instrução do arquivo é armazenado em um cache local.

📚 Escalonamento vertical é aumentar os recursos de memoria e CPU.

📚 Os volumes permitem com que possamos armazenar dados de arquivos em disco, persistindo informações.

📚 As tags ajudam no versionamento das imagens

Lista de Comandos e Termos do Docker

Lista as imagens do seu Docker host:

docker image list

Lista todos os containers, até mesmo os desligados

docker container list -a

Lista os ultimos containers, até mesmo os desligados

docker container list -a

Lista os ultimos N containers, até mesmo os desligados

docker container list -n <numero_de_containers>

Lista apenas o id dos ultimos N containers, até mesmo os desligados

docker container list -n <numero_de_containers> -q

Lista containers em execução

docker ps

Interrompe o processo de um container no Docker

docker container stop <container_id>

Reinicia um processo

docker container start <container_id>

Atualiza uma imagem

docker image pull <nome da imagem> ou docker image build -t meu_projeto_rails .

Para inspecionar uma imagem, retornando os dados referentes a ela.

docker image inspect <nome da imagem>

Abre o terminal do processo mapeando as portas:

docker-compose run --service-ports <nome_do_serviço> bash

Rodando o processo no terminal:

docker-compose run --rm web bash

Visualizar a rede do Docker

docker network ls

Removendo uma imagem

docker rmi <nome_da_imagem> ou docker rmi -f <nome_da_imagem>

Esse comando para o container e o remove em seguida

docker rm -f <nome_do_container>

Rodando testes com o bash aberto

bundle exec rspec

Modelo de uma comando Docker

docker composer run <parametros> <imagem> <CMD> <argumentos>

Roda o container a partir de uma imagem algum tempo

docker run --name <name_container> -d <name_image> sleep <tempo_em_segudos>

significado
-d
-i
-t
-rm Remove o container após finalização (mas não funciona quando usamos -d junto)
-name Parar nomear container
-v Mapeamento de volume
-p Mapeamento de porta
-m Limitar o uso de memória RAM
-c Balancear o uso CPU

Lista de termos Dockerfile

Termo Significado
FROM Puxa uma imagem
WORKDIR Define qual diretório vamos trabalhar
COPY Copia arquivos de onde está executando
RUN Executa algum comando a construção para dentro da imagegem
CMD Deve ser unica por arquivo e receber um array para um comando que será executado por ultimo
ENV Variáveis de ambiente

Lista de termos Docker Compose

⚠️ Se errarmos na indentação desse arquivo, teremos erro

Termo Significado
version Define a versão do docker
services Define o inicio do bloco onde iremos listar os serviços da aplicação
web/rails/db, etc Define o nome do serviço
build Informa que será necessário construir sua imagem antes da construção
context Indica qual diretório dentro do atual será usado
ports Define quais portas irão se conectar
image Responsável por informar qual imagem será usada para iniciar esse container

Lista de comandos para usar com o Docker Composer

Para construir todas as imagens de serviço com a definição de build no arquivo de definição

docker-compose build

Para iniciar todos os serviços

docker-compose up

Parar os serviços

docker-compose stop

Listar os serviços iniciados a partir do docker-compose.yml

docker-compose ps

Para conheçer outros comandos veja a documentação

Listando as variáveis de ambiente de dentro do docker

docker exec <container_id> env

Listando SHA256 da imagem node

docker pull node:lts-alpine

É uma boa prática na construção de arquivos DOCKERFILE especificar o node dessa forma:

FROM node:lts-alpine@sha256:<hash>

Exemplo:

FROM node:lts-alpine@sha256:b2da3316acdc2bec442190a1fe10dc094e7ba4121d029cb32075ff59bb27390a

Listando todas as imagens baixadas na máquina local

docker images --digests

Pacote não é encontrado após instalação no docker (como resolver)

@reginadiana
Copy link
Author

Quando o docker build demorar para rodar: docker build --progress=plain .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment