SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
Docker
Um Pouco Além do HelloWorld….
thiago.soares.jr@gmail.com
O que seria essa tal de Docker ?
Docker é uma plataforma Open Source escrito em Go, que é
uma linguagem de programação de alto desempenho
desenvolvida dentro do Google, que facilita a criação e
administração de ambientes isolados.
Containers são tipo Máquinas virtuais ?
Containers são Máquinas virtuais ?
Hello World - 01
● docker --version
● docker info
● docker images
● docker container run hello-world
● docker container ls
What happened ?
● CHECK
● PULL
● RUN
● KILL
Imagem? Container?
● Images
○ “São as aplicações que queremos rodar.”
○ With a container image, we bundle the application along with its runtime and dependencies. We
use that image to create an isolated executable environment, also known as container. We can
deploy containers from a given image on the platform of our choice, such as desktops, VMs,
cloud, etc.
● Containers
○ Containers are an application-centric way to deliver high-performing, scalable applications on the
infrastructure of your choice.
○ Um Container é uma instância da imagem rodando como um processo no host.
○ São as imagens em execução
Imagem? Container?
E o Docker Hub?
E o Docker Hub ?
HandsOn: NGinx
● Hub: https://hub.docker.com/_/nginx/
● Imagens Oficiais e de Usuários
● Versões de Imagens
○ Latest
○ Stable
○ Alpine
HandsOn: Redis
● docker container run -p 80:80 nginx
● CTRL+C
● docker container run -p 80:80 nginx
● docker container run -p 81:80 nginx
Docker CLI
● https://docs.docker.com/engine/reference/run/
● docker --version
● docker info
● docker container run
● docker container ls
● docker container ls -a
Docker CLI
● docker stop
○ docker stop ID/nome
● docker start
○ reinicia containers parados
○ docker container start ID/nome
● docker rm
○ docker rm ID/nome
○ Apenas para containers parados
Docker CLI
● Opção --detached ou -d
● Opção --name
○ docker container run -p 80:80 -d --name webserver nginx
● Opção --help
○ docker --help
○ docker container --help
○ E muito outros …
HandsOn: Ubuntu
● Hub: https://hub.docker.com/_/ubuntu/
● docker container run -a stdin -a stdout -i -t ubuntu /bin/bash
○ Opção -a / --attach
■ STDIN: Entradas do Teclado
■ STDOUT: Saídas do console
■ SDTERROR: Saídas de erros
○ Opcao -i
■ Mantém o SDTIN aberto funcionando, recebendo comandos
○ Opção -t
■ Habilita o TTY, terminal da maquina/container
○ /bin/bash
■ Comando a ser executado após a criação do container.
■ Neste caso, coisa do ubuntu
HandsOn: Ubuntu
● Mais simples:
○ docker container run -it ubuntu /bin/bash
● Mas isso é realmente um ubuntu ?
○ cat /etc/*release
● TASK: Criar um arquivo
● TASK: Instalar o GIT
○ apt-get update
○ apt-get install git
○ git -version
HandsOn: Ubuntu
● Parar o container
● Reiniciar o container
○ docker container ls -a
○ docker start ID/NAME
● Como executar comandos no container ?
○ docker container exec -it ID/NAME ls -ls
○ docker container exec -it ID/NAME touch teste.txt
● Como entrar no container ?
○ docker container exec -it ID/NAME /bin/bash
○ docker container attach ID/NAME
Salvando Tudo
● Commit
○ Commits gravam as alterações criadas pelo usuário em uma nova imagem
○ Cada alteração será uma nova Layer
● docker container commit -m “alguma coisa” ID_CONTAINER TAG
● docker images
● Push
○ docker login
○ docker image push TAG
Layers
Volumes
Containers são descartáveis, os dados não!
Volumes
HandsOn: MongoDB
● docker container run -it --name meu-mongo -d -p 27017:27017 mongo
● Os dados persistem se eu parar o container ?
● E se eu remover o container ?
HandsOn: MongoDB
● docker container run -it --name meu-mongo
-v /opt/TMP/javaday:/data/db
-d -p 27017:27017 mongo
DockerFile
E antes de contiuar …..
Dockerfile
● Dockerfile é um documento de texto que contém todos os comandos
que o usuário pode chamar para construir uma imagem.
● Referências
○ https://docs.docker.com/engine/reference/builder/
● Exemplos
○ https://hub.docker.com/_/ubuntu/
○ https://hub.docker.com/_/debian/
○ https://hub.docker.com/_/nginx/
Dockerfile - FROM
● Indica qual será a imagem base
● Exemplo:
FROM ubuntu:latest
LABEL maintainer = “the docker guru”
Dockerfile - RUN
● Executa comandos no shell para a construção da imagem
● Cada comando resulta em uma nova layer na imagem
● Exemplo:
RUN echo “Hello Docker World”
RUN adduser -D -s /bin/sh docker.user
Dockerfile - EXPOSE
● Informa ao docker quais portas estão disponíveis para ser exportadas
● Exemplo:
EXPOSE 8080
EXPOSE 5432
Dockerfile - CMD
● Define instruções que serão executadas quando um container for
criado.
● Exemplo
CMD ["/usr/bin/wc","--help"]
CMD ["catalina.sh", "run"]
Dockerfile - ADD ou COPY
● Ambos irão copiar arquivos do host para a imagem no momento do
build. As diferenças são mínimas, mas o ADD pode adicionar arquivos
da rede ou extrair arquivos tar.bz, enquanto o COPY não pode.
● Exemplo:
ADD *.war app.war
COPY demo.war /tomcat/webapps
Demo 01 - Rest Simples
Demo 02 - Registry
Demo 03 - Rest + Redis
Demo 04 - Registry 2
E o que vem agora ?
● Fault-tolerant
● Scale on-demand
● Resources optimally
● Registry: Discover applications
automatically, and communicate with
each other
● External world access
● Update/rollback without any
downtime.
● ……………….
Next time …..
Samples
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: spring-boot-postgres-sample
namespace: default
spec:
replicas: 1
template:
metadata:
name: spring-boot-postgres-sample
labels:
app: spring-boot-postgres-sample
spec:
containers:
- name: spring-boot-postgres-sample
env:
- name: POSTGRES_USER
valueFrom:
configMapKeyRef:
name: postgres-config
key: postgres_user
- name: POSTGRES_PASSWORD
valueFrom:
configMapKeyRef:
name: postgres-config
key: postgres_password
- name: POSTGRES_HOST
valueFrom:
configMapKeyRef:
name: hostname-config
key: postgres_host
image: <your Docker Hub account>/spring-boot-postgres-on-k8s:v1
Dicas Finais
● https://labs.play-with-docker.com/
● https://labs.play-with-k8s.com/
Dica final. E mais importante!
Thanks!
thiago.soares.jr@gmail.com
https://www.linkedin.com/in/thiagofsoares/

Mais conteúdo relacionado

Mais procurados

Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao DockerRafael Dutra
 
O fim do "funciona na minha máquina"
O fim do "funciona na minha máquina"O fim do "funciona na minha máquina"
O fim do "funciona na minha máquina"GDGFoz
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engineHudson Brendon
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Wallison Marra
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoDiogo Lucas
 
Linux Containers: do que são feitos? de onde vem? quem os alimenta?
Linux Containers: do que são feitos? de onde vem? quem os alimenta?Linux Containers: do que são feitos? de onde vem? quem os alimenta?
Linux Containers: do que são feitos? de onde vem? quem os alimenta?Marcos Paulo de Souza
 

Mais procurados (20)

Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 
O fim do "funciona na minha máquina"
O fim do "funciona na minha máquina"O fim do "funciona na minha máquina"
O fim do "funciona na minha máquina"
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Ambiente de desenvolvimento com docker e ruby on rails
Ambiente de desenvolvimento com  docker e ruby on railsAmbiente de desenvolvimento com  docker e ruby on rails
Ambiente de desenvolvimento com docker e ruby on rails
 
Docker
DockerDocker
Docker
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolso
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Docker
DockerDocker
Docker
 
Linux Containers: do que são feitos? de onde vem? quem os alimenta?
Linux Containers: do que são feitos? de onde vem? quem os alimenta?Linux Containers: do que são feitos? de onde vem? quem os alimenta?
Linux Containers: do que são feitos? de onde vem? quem os alimenta?
 

Semelhante a Introdução ao Docker

Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containerstdc-globalcode
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerRafael Gomes
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogCesar Augusto Nogueira
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Spring boot com docker
Spring boot com dockerSpring boot com docker
Spring boot com dockerPaulo Vitor
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker BásicoAndré Justi
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerAécio Pires
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 

Semelhante a Introdução ao Docker (20)

Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop docker
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Docker
DockerDocker
Docker
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Docker e vagrant para mortais
Docker e vagrant para mortaisDocker e vagrant para mortais
Docker e vagrant para mortais
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Docker fundamentos
Docker fundamentosDocker fundamentos
Docker fundamentos
 
Spring boot com docker
Spring boot com dockerSpring boot com docker
Spring boot com docker
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Docker
DockerDocker
Docker
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com Docker
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 

Introdução ao Docker

  • 1. Docker Um Pouco Além do HelloWorld…. thiago.soares.jr@gmail.com
  • 2. O que seria essa tal de Docker ? Docker é uma plataforma Open Source escrito em Go, que é uma linguagem de programação de alto desempenho desenvolvida dentro do Google, que facilita a criação e administração de ambientes isolados.
  • 3. Containers são tipo Máquinas virtuais ?
  • 5. Hello World - 01 ● docker --version ● docker info ● docker images ● docker container run hello-world ● docker container ls
  • 6. What happened ? ● CHECK ● PULL ● RUN ● KILL
  • 7. Imagem? Container? ● Images ○ “São as aplicações que queremos rodar.” ○ With a container image, we bundle the application along with its runtime and dependencies. We use that image to create an isolated executable environment, also known as container. We can deploy containers from a given image on the platform of our choice, such as desktops, VMs, cloud, etc. ● Containers ○ Containers are an application-centric way to deliver high-performing, scalable applications on the infrastructure of your choice. ○ Um Container é uma instância da imagem rodando como um processo no host. ○ São as imagens em execução
  • 9. E o Docker Hub?
  • 10. E o Docker Hub ?
  • 11.
  • 12. HandsOn: NGinx ● Hub: https://hub.docker.com/_/nginx/ ● Imagens Oficiais e de Usuários ● Versões de Imagens ○ Latest ○ Stable ○ Alpine
  • 13. HandsOn: Redis ● docker container run -p 80:80 nginx ● CTRL+C ● docker container run -p 80:80 nginx ● docker container run -p 81:80 nginx
  • 14. Docker CLI ● https://docs.docker.com/engine/reference/run/ ● docker --version ● docker info ● docker container run ● docker container ls ● docker container ls -a
  • 15. Docker CLI ● docker stop ○ docker stop ID/nome ● docker start ○ reinicia containers parados ○ docker container start ID/nome ● docker rm ○ docker rm ID/nome ○ Apenas para containers parados
  • 16. Docker CLI ● Opção --detached ou -d ● Opção --name ○ docker container run -p 80:80 -d --name webserver nginx ● Opção --help ○ docker --help ○ docker container --help ○ E muito outros …
  • 17.
  • 18. HandsOn: Ubuntu ● Hub: https://hub.docker.com/_/ubuntu/ ● docker container run -a stdin -a stdout -i -t ubuntu /bin/bash ○ Opção -a / --attach ■ STDIN: Entradas do Teclado ■ STDOUT: Saídas do console ■ SDTERROR: Saídas de erros ○ Opcao -i ■ Mantém o SDTIN aberto funcionando, recebendo comandos ○ Opção -t ■ Habilita o TTY, terminal da maquina/container ○ /bin/bash ■ Comando a ser executado após a criação do container. ■ Neste caso, coisa do ubuntu
  • 19. HandsOn: Ubuntu ● Mais simples: ○ docker container run -it ubuntu /bin/bash ● Mas isso é realmente um ubuntu ? ○ cat /etc/*release ● TASK: Criar um arquivo ● TASK: Instalar o GIT ○ apt-get update ○ apt-get install git ○ git -version
  • 20. HandsOn: Ubuntu ● Parar o container ● Reiniciar o container ○ docker container ls -a ○ docker start ID/NAME ● Como executar comandos no container ? ○ docker container exec -it ID/NAME ls -ls ○ docker container exec -it ID/NAME touch teste.txt ● Como entrar no container ? ○ docker container exec -it ID/NAME /bin/bash ○ docker container attach ID/NAME
  • 21. Salvando Tudo ● Commit ○ Commits gravam as alterações criadas pelo usuário em uma nova imagem ○ Cada alteração será uma nova Layer ● docker container commit -m “alguma coisa” ID_CONTAINER TAG ● docker images ● Push ○ docker login ○ docker image push TAG
  • 25. HandsOn: MongoDB ● docker container run -it --name meu-mongo -d -p 27017:27017 mongo ● Os dados persistem se eu parar o container ? ● E se eu remover o container ?
  • 26. HandsOn: MongoDB ● docker container run -it --name meu-mongo -v /opt/TMP/javaday:/data/db -d -p 27017:27017 mongo
  • 28. E antes de contiuar …..
  • 29.
  • 30.
  • 31. Dockerfile ● Dockerfile é um documento de texto que contém todos os comandos que o usuário pode chamar para construir uma imagem. ● Referências ○ https://docs.docker.com/engine/reference/builder/ ● Exemplos ○ https://hub.docker.com/_/ubuntu/ ○ https://hub.docker.com/_/debian/ ○ https://hub.docker.com/_/nginx/
  • 32. Dockerfile - FROM ● Indica qual será a imagem base ● Exemplo: FROM ubuntu:latest LABEL maintainer = “the docker guru”
  • 33. Dockerfile - RUN ● Executa comandos no shell para a construção da imagem ● Cada comando resulta em uma nova layer na imagem ● Exemplo: RUN echo “Hello Docker World” RUN adduser -D -s /bin/sh docker.user
  • 34. Dockerfile - EXPOSE ● Informa ao docker quais portas estão disponíveis para ser exportadas ● Exemplo: EXPOSE 8080 EXPOSE 5432
  • 35. Dockerfile - CMD ● Define instruções que serão executadas quando um container for criado. ● Exemplo CMD ["/usr/bin/wc","--help"] CMD ["catalina.sh", "run"]
  • 36. Dockerfile - ADD ou COPY ● Ambos irão copiar arquivos do host para a imagem no momento do build. As diferenças são mínimas, mas o ADD pode adicionar arquivos da rede ou extrair arquivos tar.bz, enquanto o COPY não pode. ● Exemplo: ADD *.war app.war COPY demo.war /tomcat/webapps
  • 37.
  • 38.
  • 39. Demo 01 - Rest Simples
  • 40. Demo 02 - Registry
  • 41. Demo 03 - Rest + Redis
  • 42. Demo 04 - Registry 2
  • 43. E o que vem agora ?
  • 44. ● Fault-tolerant ● Scale on-demand ● Resources optimally ● Registry: Discover applications automatically, and communicate with each other ● External world access ● Update/rollback without any downtime. ● ……………….
  • 45.
  • 47. Samples apiVersion: extensions/v1beta1 kind: Deployment metadata: name: spring-boot-postgres-sample namespace: default spec: replicas: 1 template: metadata: name: spring-boot-postgres-sample labels: app: spring-boot-postgres-sample spec: containers: - name: spring-boot-postgres-sample env: - name: POSTGRES_USER valueFrom: configMapKeyRef: name: postgres-config key: postgres_user - name: POSTGRES_PASSWORD valueFrom: configMapKeyRef: name: postgres-config key: postgres_password - name: POSTGRES_HOST valueFrom: configMapKeyRef: name: hostname-config key: postgres_host image: <your Docker Hub account>/spring-boot-postgres-on-k8s:v1
  • 49. Dica final. E mais importante!
  • 50.