Docker 1.12 - Swarm Mode

45
Docker 1.12 - Swarm Rafael Gomes

Transcript of Docker 1.12 - Swarm Mode

Page 1: Docker 1.12 - Swarm Mode

Docker 1.12 - Swarm

Rafael Gomes

Page 2: Docker 1.12 - Swarm Mode

Quem sou eu

Rafael Gomes:● Soteropolitano● Apaixonado por compartilhamento● Consultor na Thoughtworks● Docker Captain● Blog: techfree.com.br● Twitter/github: @gomex● Áreas de interesse/foco:

○ Cultura DevOps○ Cloud○ Entrega contínua○ Automação de infraestrutura○ Teste de infraestrutura○ Monitoramento

Page 3: Docker 1.12 - Swarm Mode

O que estou fazendo de relevante agora

Livro:

http://tinyurl.com/docker-devel

● Pague quanto quiser, inclusive nada

● Não precisa saber nada de Docker

● Licenciado com Creative Commons

Page 4: Docker 1.12 - Swarm Mode

Docker! Tá tranquilo?Vamos precisar de um conhecimento básico

Page 5: Docker 1.12 - Swarm Mode

O que há de novo?Bastante coisa! :)

Page 6: Docker 1.12 - Swarm Mode

Swarm mode

Page 7: Docker 1.12 - Swarm Mode

O que é o Swarm?

Page 8: Docker 1.12 - Swarm Mode

Como era criar um cluster Swarm

Instalar docker para manager Engine

Iniciar swarm manager container

Instalar consul

Instalar docker para manager Engine

Iniciar swarm worker container

Join do worker

Page 9: Docker 1.12 - Swarm Mode

Swarm modeComo é agora?

Page 10: Docker 1.12 - Swarm Mode

Swarm Mode

# docker swarm initEngine

Page 11: Docker 1.12 - Swarm Mode

Swarm Mode

# docker swarm join ipmanager

manager

worker

Page 12: Docker 1.12 - Swarm Mode

Docker service

# docker service create --replicas 3 --name web --network my_net nginx:latest manager

worker worker

my_net

Page 13: Docker 1.12 - Swarm Mode

Docker service

# docker service create --replicas 2 --name redis --network my_net redis:latest manager

worker worker

my_net

Page 14: Docker 1.12 - Swarm Mode

Falha de node

# docker service create --replicas 2 --name redis --network my_net redis:latest manager

worker worker

my_net

X

Page 15: Docker 1.12 - Swarm Mode

Falha de node

# docker service create --replicas 2 --name redis --network my_net redis:latest manager

worker

my_net

Page 16: Docker 1.12 - Swarm Mode

Healthcheck

HEALTHCHECK --interval=5m --timeout=3s \ CMD curl -f http://localhost/ || exit 1

Erros● 0 - Sucesso● 1 - Com problemas● 2 - Iniciando novamente

Page 17: Docker 1.12 - Swarm Mode

worker2

Manutenção de node

# docker node update --availability drain worker2 manager

worker1

my_net

Page 18: Docker 1.12 - Swarm Mode

worker2

Manutenção de node

# docker node update --availability drain worker2 manager

worker1

my_net

X

Page 19: Docker 1.12 - Swarm Mode

worker

Escalando

# docker service scale redis=3manager

worker

my_net

Page 20: Docker 1.12 - Swarm Mode

worker

Serviços globais

# docker service create --mode global --name datadog datadog/dd-agent manager

worker

my_net

Page 21: Docker 1.12 - Swarm Mode

worker

Escolhendo nodes

# docker service create --name mysql --constrain storage="ssd" mysql manager

worker

my_net

worker worker

docker daemon --label storage="ssd"

Page 22: Docker 1.12 - Swarm Mode

worker

Escolhendo nodes

manager

worker

my_net

worker worker

docker daemon --label storage="ssd"

# docker service scale mysql=3

Page 23: Docker 1.12 - Swarm Mode

Serviços

serviço

task

task

task

container

container

unikernel???

Page 24: Docker 1.12 - Swarm Mode

Serviços

redis

redis.1

redis.2

redis.3

redis:latest

redis:latest

redis:latest

Page 25: Docker 1.12 - Swarm Mode

Criando um serviço

redis

redis.1

redis.2

redis.3

redis:latest

redis:latest

redis:latest

# docker service create --name redis --replicas 3 redis:latest

Page 26: Docker 1.12 - Swarm Mode

Listando serviços

redis

redis.1

redis.2

redis.3

redis:latest

redis:latest

redis:latest

# docker service ls

Page 27: Docker 1.12 - Swarm Mode

Mais informações sobre serviço

redis

redis.1

redis.2

redis.3

redis:latest

redis:latest

redis:latest

# docker service inspect --pretty redis

Page 28: Docker 1.12 - Swarm Mode

Deletando serviço

redis

redis.1

redis.2

redis.3

redis:latest

redis:latest

redis:latest

# docker service rm redis

Page 29: Docker 1.12 - Swarm Mode

Atualizando a aplicação

redis

redis.1

redis.2

redis.3

redis:latest

redis:latest

redis:latest

# docker service create --replicas 3 --name redis --update-delay 10s --update-parallelism 1 redis:3.0.6

--update-delay : Tempo entre atualização de um container e outro--update-parallelism: Quanto containers serão atualizados ao mesmo tempo

Page 30: Docker 1.12 - Swarm Mode

Atualizando a aplicação

redis

redis.1

redis.2

redis.3

redis:latest

redis:latest

redis:latest

# docker service update --image redis:3.0.7 redis

--update-delay : Tempo entre atualização de um container e outro--update-parallelism: Quanto containers serão atualizados ao mesmo tempo

Page 31: Docker 1.12 - Swarm Mode

Stack

redis

redis.1

redis.2

redis.3

redis:latest

redis:latest

redis:latest

Page 32: Docker 1.12 - Swarm Mode

DAB (Distributed Application Bundle)

nginx redis datadog mysql

EXPERIMENTAL

Page 33: Docker 1.12 - Swarm Mode

Criando um cluster na sua máquina

# docker swarm init --listen-addr $(docker-machine ip manager):2377

# docker-machine create -d virtualbox manager

# docker $(docker-machine config worker) swarm join $(docker-machine ip manager)

# docker-machine create -d virtualbox worker1

# eval $(docker-machine env manager)

# docker node ls

Page 34: Docker 1.12 - Swarm Mode

Docker Beta AWS

Page 35: Docker 1.12 - Swarm Mode

O convite!

Page 36: Docker 1.12 - Swarm Mode

Iniciando o cluster

Page 37: Docker 1.12 - Swarm Mode

O que é criado com isso?

Page 38: Docker 1.12 - Swarm Mode

Acessando o gerenciamento

# ssh [email protected]

# docker node ls

Page 39: Docker 1.12 - Swarm Mode

Iniciando serviços

# docker service create --name web -p 80:80/tcp nginx

# curl http://test-2-ELB-dd93902.us.west-1.elb.amazonaws.com

Page 40: Docker 1.12 - Swarm Mode

Aumentando o número de nodes

Page 41: Docker 1.12 - Swarm Mode

● Enviar dados para o

cloudwatch?

AWS Beta

Possibilidades futuras

● Integrações automatizada com outros serviços

● Autoscalling por padrão

Page 42: Docker 1.12 - Swarm Mode

AWS Beta

Observações:

● Ainda está em Beta (ou seja, não use em prod)

● A integração do Docker com AWS é sem custo, mas você ainda pode ser cobrado pelo uso dos recursos da AWS

Page 43: Docker 1.12 - Swarm Mode

Interessado em testar?

https://beta.docker.com

Page 44: Docker 1.12 - Swarm Mode

Dúvidas?

Page 45: Docker 1.12 - Swarm Mode

Rafael Gomes:

twitter.com/gomex

[email protected]

twitter.com/thoughtworks_pt

Obrigado!