Docker Flashcards
Roteiro
O que é docker
Como executar um container
Como verificar containers já executados
Como verificar containers ativos?
docker ps
Para ver todos os containers já executados e ainda não deletados, além dos ativos:
docker ps -a
Para obter os IDs desses containers:
docker ps -a -q
Como rodar um container hello-world? O que este comando executa?
docker run
docker run hello-world
Inicialmente ele verifica se consegue encontrar a imagem localmente. Caso não encontre, ele irá fazer o pull da imagem solicitada.
Em sequência o container é executado.
Se executarmos docker ps, veremos que não há nenhum container em execução. Isso ocorre poiso entrypoint da imagem hello-world executou o print exibido na tela e morreu, visto que o entry point terminou sua execução após o print.
Como executar um comando em uma imagem específica?
docker run -it :
docker run -it ubuntu:latest bash
- i indica modo iterativo, mantendo o bash em execução em nosso termial.
- t tty - permite a execução de comando ligado ao modo iterativo
Para garantir que o container seja removido após a execução, é possível adicionar a flag –rm
Ex:
docker run -it –rm ubuntu:latest bash
Como dar start em um container?
docker start
Como funciona a exposição dos containers?
Se o container tem as portas ativas, não significa que meu host consegue acessar essa porta, visto que a porta está ativa apenas para o contaier.
Ex:
Execute docker run nginx
Ele irá subir um container com o nginx com a porta 80 exposta. É possível verificar isso com docker ps.
Mas ao tentar acessar localhost:80, não temos sucesso. Outros container dentro do dockerhost sim conseguiriam acessar essa porta.
E como fazemos para acessar a porta?
docker run -p 8080:80 nginx
Esse comando diz que quando tentarmos acessar a porta 8080 da máquina, o dockerhost deve direcionar para a porta 80 do container do nginx.
Isso quer dizer que precisamos publicar a porta do container para conseguirmos acessa-lo fora da rede interna do dockerhost
Como executar um docker em background?
docker run -d -p 8080:80 nginx
-d coloca para o terminal executar em background (detached)
Como parar um container?
docker stop
Como remover um container?
Para comando já parado:
docker rm
Caso o container esteja em execução é possível forçar a remoção ou parar o container e na sequência remove-lo:
docker stop -f
ou
docker stop
docker rm
E para remover todos os containers?
docker rm $(docker ps -a -q) -f
Como dar o nome a um container?
docker run -d –name
docker run -d –name nginx_paulo nginx
Ex: dar nome ao container, expondo a porta
docker run -d -p 8080:80 –name nginx nginx
Como executar um comando no container?
docker exec
Executar o container
docker run -d -p 80:8080 –name nginx nginx
Executar comando no container:
docker exec nginx ls
*Para comando interativos:
docker exec -it nginx bash
Como criar volumes com containers?
docker run -d –name nginx -p 8080:80 –mount type=bind,source=”$(pwd)”/github/learn-docker/html,target=/usr/share/nginx/html nginx
Também é possível criar com o -v, mas este comando está deprecado
docker run -d –name nginx -p 8080:80 -v /pasta/do/meu/computador:/pasta/do/docker
Para o que ser o volume? Como criar um volume?
Os volumes servem para mantê-los criados independente das imagens e containers docker. Facilita bastante na utilização visto que é difícil ficar lembrando os paths para configuração dos mounts.
Para cria-los, basta executar:
docker volume create meuvolume
Para ver seus volumes:
docker volume ls
Para inspecionar o volume
docker volume inspect meuvolume
Como mapear um volume em um container?
docker run –name nginx -d –mount type=volume,source=meuvolume,target=/app nginx
Ex - Criando dois containers com volumes compartilhados:
docker run –name nginx -d –mount type=volume,source=meuvolume,target=/app nginx
docker exec -it nginx bash
cd /app/
touch oi
docker run –name nginx2 -d –mount type=volume,source=meuvolume,target=/app nginx
docker exec -it nginx2 bash
ls /app/
Podemos montar um terceiro container com o -v
docker run –name nginx3 -d -v meuvolume:/app nginx
docker exec -it nginx3 bash
ls /app/
Como limpar todos os volumes (caso máquina lenta)?
docker volume prune
[Imagem] - Qual prática é utilizada para versionar imagens?
É muito comum subir uma imagem com a tag que você acabou de mexer e outra com a versão latest.
[Imagem] - Como apenas baixar uma imagem?
docker pull
docker pull ubuntu
Para baixar uma tag específica
docker pull :
docker pull ubuntu:rc-apine
[Imagem] - Como verificar as imagens que estão no meu computador?
docker images
[imagem] - Como remover uma imagem?
docker rmi
docker rmi :
Ex:
docker rmi php
docker rmi php:rc-alpine
[Imagem] - Como criar minha própria imagem?
É possível criar uma imagem através do Dockerfile. Nele é declarado a receita da imagem que será criado.
Ex - Preciso da imagem do nginx já com o vim instalado. Para isso, utilize o seguinte Dockerfile:
‘’’
FROM nginx:latest
RUN apt-get update
RUN apt-get install vim -y
‘’’
O comando para construir a imagem é:
docker build -t /:
Ex:
docker build -t paulomulotto/nginx-com-vim:latest .