-
-
Save reginadiana/37f2f5cdfe43983028ec0c206fa5194a to your computer and use it in GitHub Desktop.
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 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 |
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 |
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 |
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
docker exec <container_id> env
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
docker images --digests
Pacote não é encontrado após instalação no docker (como resolver)
Quando o docker build demorar para rodar: docker build --progress=plain .