Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Docker Docker Compose
Docker - Nivelando conhecimento - Parte 2
Docker Compose, porque um é pouco, dois é bom mas três já ...
Docker Docker Compose
Um novo mundo
Depois da apresentação anterior
Agora que você conhece o docker você
começou a...
“Bui...
Docker Docker Compose
Alguns problemas
Até que...
Você começou a subir uma aplicação que dependia de outros recursos, que
...
Docker Docker Compose
Alguns problemas
Até que...
E com o agravante de que os contêineres têm que subir em ordem, com mais...
Docker Docker Compose
Alguns problemas
Até que...
Parabéns! Você acaba de ganhar:
Muitas coisas para digitar e lembrar
Mui...
Docker Docker Compose
Docker Compose
Docker Docker Compose
Origens
Em 2013 a empresa Orchard iniciou um projeto chamado fig
Em 2014 foram adquiridos pela Docker...
Docker Docker Compose
Propósito
Compose is a tool for defining and running multi-container Docker
applications. With Compos...
Docker Docker Compose
Instalação
curl -L https://github.com/docker/compose/releases/download/
1.8.0/docker-compose-$(uname...
Docker Docker Compose
O segredo
O segredo está no arquivo docker-compose.yml:
version: ’2’
services:
db:
image: postgres:9...
Docker Docker Compose
O segredo
E agora, para subir tudo o que foi
definido no docker-compose.yml:
docker-compose up
Se as ...
Docker Docker Compose
O segredo
E agora, para subir tudo o que foi
definido no docker-compose.yml:
docker-compose up
Se as ...
Docker Docker Compose
...
Docker Docker Compose
Exemplos
#1 - Subindo um container que depende de outros
docker run -d --name redis ...
docker run -...
Docker Docker Compose
Exemplos
#1 - Subindo um container que depende de outros
No seu docker-compose.yml:
version: ’2’
ser...
Docker Docker Compose
Exemplos
#1 - Subindo um container que depende de outros
No seu docker-compose.yml:
version: ’2’
ser...
Docker Docker Compose
Exemplos
#2 - Montando volumes
docker run -d --name database 
-v ‘pwd‘/data:/var/lib/postgresql/data...
Docker Docker Compose
Exemplos
#2 - Montando volumes
docker run -d --name database 
-v ‘pwd‘/data:/var/lib/postgresql/data...
Docker Docker Compose
Exemplos
#2.1 - Montando volumes
No docker existe o conceito de volumes nomeados:
version: ’2’
servi...
Docker Docker Compose
Exemplos
#3 - Liberando portas
docker run -d 
-p 8300-8302:8300-8302 
-p 8301-8302:8301-8302/udp 
-p...
Docker Docker Compose
Exemplos
#3 - Liberando portas
docker run -d 
-p 8300-8302:8300-8302 
-p 8301-8302:8301-8302/udp 
-p...
Docker Docker Compose
Exemplos
#4 - “Buildando” outro Dockerfile, com outro contexto
docker build 
-f Dockerfile-alternativ...
Docker Docker Compose
Exemplos
#4 - “Buildando” outro Dockerfile, com outro contexto
docker build 
-f Dockerfile-alternativ...
Docker Docker Compose
Exemplos
#5 - Mas eu preciso escalar...
“Minha aplicação tem que subir vários containers idênticos”
...
Docker Docker Compose
Exemplos
#5 - Mas eu preciso escalar...
“Minha aplicação tem que subir vários containers idênticos”
...
Docker Docker Compose
Comandos úteis
docker-compose build # Constroi as imagens que estao
# definidas no seu docker-compos...
Docker Docker Compose
Onde usar?
Em ambientes de desenvolvimento
No seu workflow de integração contínua
docker-compose up
....
Docker Docker Compose
Referências
Docker Compose
Instalando
Docker Compose File Reference
Quickstart Django
Quickstart Rai...
Docker Docker Compose
Pensamento da noite
Upcoming SlideShare
Loading in …5
×

Talk #3.2 - Docker Compose

534 views

Published on

Segunda parte sobre o Docker, agora explicando como utilizar uma das melhores abstrações para gerenciar e linkar containers, o Docker Compose. Com ele é possível subir toda uma árvore de serviços interdependentes com apenas um comando!

Talk anteiror (parte 1):
https://www.youtube.com/watch?v=hCMcQfGb4cA
http://www.slideshare.net/HugoPosca/talk-31-dockernivelandoconhecimento

Published in: Software
  • Be the first to comment

Talk #3.2 - Docker Compose

  1. 1. Docker Docker Compose Docker - Nivelando conhecimento - Parte 2 Docker Compose, porque um é pouco, dois é bom mas três já é demais Hugo Posca PagarMe 30 setembro 2016
  2. 2. Docker Docker Compose Um novo mundo Depois da apresentação anterior Agora que você conhece o docker você começou a... “Buildar” suas próprias imagens “Conteinerizar” tudo Subir a sua aplicação utilizando o docker por linha de comando Tudo certo!
  3. 3. Docker Docker Compose Alguns problemas Até que... Você começou a subir uma aplicação que dependia de outros recursos, que estavam em outros contêineres... docker pull ... docker pull ... docker build ... docker build ... docker run ... docker run ...
  4. 4. Docker Docker Compose Alguns problemas Até que... E com o agravante de que os contêineres têm que subir em ordem, com mais configurações e detalhes: docker run -d --name redis redis:3.0.7-alpine docker run -d --name mail schickling/mailcatcher docker run -d --name database -v ‘pwd‘/data:/var/lib/postgresql/data postgres:9.5.4 docker run -d --name application --link database --link redis --link mail -p 5000:5000 my_application:1.0
  5. 5. Docker Docker Compose Alguns problemas Até que... Parabéns! Você acaba de ganhar: Muitas coisas para digitar e lembrar Muitos detalhes pra esquecer e errar Matar e subir contêineres começou a ficar difícil Enfim... Um processo suuuper divertido Êêêeba!
  6. 6. Docker Docker Compose Docker Compose
  7. 7. Docker Docker Compose Origens Em 2013 a empresa Orchard iniciou um projeto chamado fig Em 2014 foram adquiridos pela Docker Inc. Nasce o docker compose
  8. 8. Docker Docker Compose Propósito Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application’s services. Then, using a single command, you create and start all the services from your configuration.
  9. 9. Docker Docker Compose Instalação curl -L https://github.com/docker/compose/releases/download/ 1.8.0/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose Mais opções na página de instalação
  10. 10. Docker Docker Compose O segredo O segredo está no arquivo docker-compose.yml: version: ’2’ services: db: image: postgres:9.5.4 volumes: - ./data:/var/lib/postgresql/data web: build: . command: bundle exec rails s -p 3000 -b ’0.0.0.0’ volumes: - .:/myapp ports: - "3000:3000" links: - db
  11. 11. Docker Docker Compose O segredo E agora, para subir tudo o que foi definido no docker-compose.yml: docker-compose up Se as imagens não foram “buildadas”, elas serão! Os contêineres de dependências subirão na ordem! 1 Banco de dados 2 Aplicação Depois de um único comando, tudo estará funcionando!
  12. 12. Docker Docker Compose O segredo E agora, para subir tudo o que foi definido no docker-compose.yml: docker-compose up Se as imagens não foram “buildadas”, elas serão! Os contêineres de dependências subirão na ordem! 1 Banco de dados 2 Aplicação Depois de um único comando, tudo estará funcionando!
  13. 13. Docker Docker Compose ...
  14. 14. Docker Docker Compose Exemplos #1 - Subindo um container que depende de outros docker run -d --name redis ... docker run -d --name mail ... docker run -d --name database ... docker run -d --name application --link database --link redis --link mail my_application:1.0
  15. 15. Docker Docker Compose Exemplos #1 - Subindo um container que depende de outros No seu docker-compose.yml: version: ’2’ services: redis: image: redis mail: image: schickling/mailcatcher database: image: postgres:9.5.4 ... application: build: . ... links: - database - redis - mail
  16. 16. Docker Docker Compose Exemplos #1 - Subindo um container que depende de outros No seu docker-compose.yml: version: ’2’ services: redis: image: redis mail: image: schickling/mailcatcher database: image: postgres:9.5.4 ... application: build: . ... links: - database - redis - mail E agora, basta executar: docker-compose up Se as imagens não foram baixadas ou “buildadas”, elas serão! Os contêineres subirão na ordem: 1 Redis, mail, database 2 Aplicação Se quiser deixar tudo rodando em background, sem travar o seu terminal: docker-compose up -d
  17. 17. Docker Docker Compose Exemplos #2 - Montando volumes docker run -d --name database -v ‘pwd‘/data:/var/lib/postgresql/data postgres:9.5.4 docker run -d --name application ... -v ‘pwd‘/:/code my_application:1.0
  18. 18. Docker Docker Compose Exemplos #2 - Montando volumes docker run -d --name database -v ‘pwd‘/data:/var/lib/postgresql/data postgres:9.5.4 docker run -d --name application ... -v ‘pwd‘/:/code my_application:1.0 No seu docker-compose.yml: version: ’2’ services: ... database: image: postgres:9.5.4 volumes: - ./data:/var/lib/postgresql/data application: build: . ... volumes: - ./:/code links: - database ...
  19. 19. Docker Docker Compose Exemplos #2.1 - Montando volumes No docker existe o conceito de volumes nomeados: version: ’2’ services: ... database: image: postgres:9.5.4 volumes: - datavolume:/var/lib/postgresql/data ... Dessa forma datavolume será um volume gerenciado pelo próprio docker e não um diretório explícito. Experimente: docker volume ls
  20. 20. Docker Docker Compose Exemplos #3 - Liberando portas docker run -d -p 8300-8302:8300-8302 -p 8301-8302:8301-8302/udp -p 8400:8400 -p 8500:8500 -p 8600:8600 -p 8600:8600/udp consul:latest
  21. 21. Docker Docker Compose Exemplos #3 - Liberando portas docker run -d -p 8300-8302:8300-8302 -p 8301-8302:8301-8302/udp -p 8400:8400 -p 8500:8500 -p 8600:8600 -p 8600:8600/udp consul:latest No seu docker-compose.yml: version: ’2’ services: consul: image: consul:latest ports: - 8300-8302:8300-8302 - 8301-8302:8301-8302/udp - 8400:8400 - 8500:8500 - 8600:8600 - 8600:8600/udp
  22. 22. Docker Docker Compose Exemplos #4 - “Buildando” outro Dockerfile, com outro contexto docker build -f Dockerfile-alternativo src/
  23. 23. Docker Docker Compose Exemplos #4 - “Buildando” outro Dockerfile, com outro contexto docker build -f Dockerfile-alternativo src/ No seu docker-compose.yml: version: ’2’ services: application: build: context: src/ dockerfile: Dockerfile-alternativo
  24. 24. Docker Docker Compose Exemplos #5 - Mas eu preciso escalar... “Minha aplicação tem que subir vários containers idênticos” docker-compose scale application=5
  25. 25. Docker Docker Compose Exemplos #5 - Mas eu preciso escalar... “Minha aplicação tem que subir vários containers idênticos” docker-compose scale application=5
  26. 26. Docker Docker Compose Comandos úteis docker-compose build # Constroi as imagens que estao # definidas no seu docker-compose.yml docker-compose build --no-cache # Constroi as imagens, # ignorando construcoes anteriores docker-compose up [servico] # Sobe todos os servicos ou # o servico especificado docker-compose stop # Para os containers que estao executando docker-compose start # (Re)inicia containers parados docker-compose rm [-f] # Remove containers parados
  27. 27. Docker Docker Compose Onde usar? Em ambientes de desenvolvimento No seu workflow de integração contínua docker-compose up ./ci-tests.sh docker-compose down Em produção... o buraco é mais embaixo.
  28. 28. Docker Docker Compose Referências Docker Compose Instalando Docker Compose File Reference Quickstart Django Quickstart Rails
  29. 29. Docker Docker Compose Pensamento da noite

×