07 / 2019
Docker notes
docker container --help
docker container ls
docker contaner ls --all
Instâncias em execução ou executadas no passado.
Definir imagem
- Dockerfile
docker build [--tag=thetag[:v1.0]] .docker image lsdocker run <tag>- cria container
FROM python:2.7-slim
WORKDIR /app
COPY . /app
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 80
ENV NAME World
CMD ["python", "app.py"]
- Comandos acima controem a imagem no
docker build CMDé executado nodocker runsobre a imagem construÃda no build
Argumentos
-e env: variável de ambiente
-d detach
-it interativo
--name
-p expor portas
-rm apagar apos finalizar
--network X : conectar à rede X
Upload da imagem
docker login
docker push username/repo:tag
docker run baixará a imagem se ela não estiver presente na máquina.
Prune
Imagens
docker image pruneLimpa imagens sem tag e sem container;docker image prune -aLimpa imagens sem containerdocker image prune -a --filter "until=24h"
Containers
docker container prune remove containers parados.
Volumes, redes
docker system prune
Stacks
- docker-compose.yml
- docker swarm init (ativa o modo swarm)
- docker stack deploy -c docker-compose.yml stackname
stack (grupo de serviços) {
service (ex: http server) {
task/container (ex: instancia n do http server)[]
}[]
}
- Listar serviços docker service ls OU --> services
- Listas serviços da stack docker stack services stackname --> services
- Listar tasks/containers do serviço docker service ps servicename --> tasks
Swarms
- Múltiplas máquinas (nodos)
- Swarm manager controla o cluster (outros nodos são workers)
$ docker-machine ssh myvm1 "docker swarm init --advertise-addr <myvm1 ip>"
To add a worker to this swarm, run the following command:
docker swarm join \
--token <token> \
<myvm ip>:<port>
$ docker-machine ssh myvm2 "docker swarm join \
--token <token> \
<ip>:2377"
This node joined a swarm as a worker.
- Listar nodos
docker node ls - Sair
docker swarm leave - Alterar ambiente
$ docker-machine env myvm1
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/sam/.docker/machine/machines/myvm1"
export DOCKER_MACHINE_NAME="myvm1"
# Run this command to configure your shell:
# eval $(docker-machine env myvm1)
docker-machine ls- Listar máquinas, verificar se está no ambiente- Rodar o
docker stack deployagora irá fazer com que rode como se estivesse na máquina ambiente, mas com acesso a seus arquivos - Derrubar a stack
docker stack rm - Resetar ambiente
eval $(docker-machine env -u) - Iniciar máquina parada
docker-machine start|stop <machine-name>
Networks
Tipos
bridge- docker --> hosthost- remover isolamento entre container e hostoverlay- comunicação de swarmmacvlan- aparecer como dispositivo fÃsiconone
Na criação de um serviço, por padrão este entra na rede de tipo overlay de no me ingress , exceto se especificado o contrário.