Introdução ao Docker
Docker - Breve história
● Release inicial em 13/3/2013
● Iniciado como projeto interno
● Criado por Solomon Hykes
● Escrito em Go (Google)
● Open Source - http://docker.com
Docker - O que é?
● Tecnologia de código aberto
● Crie, execute, teste e implante aplicações.
● Empacote software em uma unidade padronizada para o
desenvolvimento.
● Utilizou LXC inicialmente, migrado para runC
(libcontainer).
● AUFS como filesystem (Another Union File System)
● Container não é VM!
Docker - Comunidade
● Github - Open Source
○ 180k linhas de código
○ 31k commits
○ 185 releases
○ 1.6k contribuidores
○ 149 pull requests
Docker - Alguns dados
● No final de 2014, 100 milhões de imagens foram
baixadas.
● Neste início de 2017, o número saltou para 8 bilhões de
imagens.
Docker - VM vs Container
Docker - Por que utilizar?
● Evitamos a frase - “mas funciona na minha máquina”.
● Aplicação toda contida em uma imagem.
● Infraestrutura definida como código.
● Comunidade.
Docker - Terminologia
● Images - É a “planta” de nossa aplicação, que forma a
base para os containers.
● Containers - São criados por Docker Images e rodam a
aplicação atual.
● Docker Daemon - Serviço em background que roda no
host e que gerencia a construção, execução e
distribuição.
Docker - Terminologia
● Docker Containers - Implementação dinâmica de uma
imagem. Múltiplos containers podem vir de uma única
imagem.
● Docker Client - Linha de comando que permite que o
usuário interaja com o daemon.
● Docker Hub - O registry (repositório) para Docker Images.
Docker - Como instalar?
CE - Community Edition
1. sudo apt-get -y install 
apt-transport-https 
ca-certificates 
curl 
software-properties-common
2. curl -fsSL https://download.docker.com/linux/debian/gpg |
sudo apt-key add -
3. sudo apt-get update
4. apt-get -y install docker-ce
Docker - Como iniciar, qual o primeiro comando?
● Que tal iniciar pelo começo?
○ docker version
○ docker info
Docker - Como eu...?
● ...inicio meu primeiro container?
Spoiler alert: tudo vem de uma imagem!
Docker
DEMO
Docker - Evoluindo...
● Como listar containers?
docker container list
● Como parar?
docker stop
● Como reiniciar?
docker restart
● Como remover?
docker rm
Docker
DEMO
Docker - Entrando num container
“Quero criar minha própria imagem, pois nenhuma imagem
que procurei atendeu meus requisitos.”
Podemos usar o comando docker attach para trabalhar
no container.
Docker
DEMO
Docker - Okay, tudo pronto, e agora?
Agora temos que “empacotar” o seu container em uma
imagem.
Usamos então o comando docker commit para gerar a
imagem.
Docker
DEMO
Docker - Terminologia
Dockerfile é:
● Simples arquivo texto onde contém uma lista de comandos.
● É uma forma simples de automatizar a criação de imagens.
● Basicamente são comandos em Linux, então não é
necessário aprender uma nova sintaxe.
Docker - Nginx
# imagem base
FROM nginx
# copiando arquivo para um diretório específico
COPY index.html /usr/share/nginx/html
# qual porta queremos que seja publicada
EXPOSE 80
# rodando aplicação
CMD ["nginx", "-g", "daemon off;"]
Docker - PHP CLI
# imagem base
FROM php:7.1-cli
# comando que irá rodar ao iniciar o container
CMD ["php", "--version"]
Docker - Volumes
Queremos programar localmente, ou temos dados para enviar
para dentro do container
docker run -it -v /path/to/file:/file tchelinux-app command
/file
PERGUNTAS?

Introdução ao Docker

  • 1.
  • 2.
    Docker - Brevehistória ● Release inicial em 13/3/2013 ● Iniciado como projeto interno ● Criado por Solomon Hykes ● Escrito em Go (Google) ● Open Source - http://docker.com
  • 3.
    Docker - Oque é? ● Tecnologia de código aberto ● Crie, execute, teste e implante aplicações. ● Empacote software em uma unidade padronizada para o desenvolvimento. ● Utilizou LXC inicialmente, migrado para runC (libcontainer). ● AUFS como filesystem (Another Union File System) ● Container não é VM!
  • 4.
    Docker - Comunidade ●Github - Open Source ○ 180k linhas de código ○ 31k commits ○ 185 releases ○ 1.6k contribuidores ○ 149 pull requests
  • 5.
    Docker - Algunsdados ● No final de 2014, 100 milhões de imagens foram baixadas. ● Neste início de 2017, o número saltou para 8 bilhões de imagens.
  • 6.
    Docker - VMvs Container
  • 7.
    Docker - Porque utilizar? ● Evitamos a frase - “mas funciona na minha máquina”. ● Aplicação toda contida em uma imagem. ● Infraestrutura definida como código. ● Comunidade.
  • 8.
    Docker - Terminologia ●Images - É a “planta” de nossa aplicação, que forma a base para os containers. ● Containers - São criados por Docker Images e rodam a aplicação atual. ● Docker Daemon - Serviço em background que roda no host e que gerencia a construção, execução e distribuição.
  • 9.
    Docker - Terminologia ●Docker Containers - Implementação dinâmica de uma imagem. Múltiplos containers podem vir de uma única imagem. ● Docker Client - Linha de comando que permite que o usuário interaja com o daemon. ● Docker Hub - O registry (repositório) para Docker Images.
  • 10.
    Docker - Comoinstalar? CE - Community Edition 1. sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common 2. curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 3. sudo apt-get update 4. apt-get -y install docker-ce
  • 11.
    Docker - Comoiniciar, qual o primeiro comando? ● Que tal iniciar pelo começo? ○ docker version ○ docker info
  • 12.
    Docker - Comoeu...? ● ...inicio meu primeiro container? Spoiler alert: tudo vem de uma imagem!
  • 13.
  • 14.
    Docker - Evoluindo... ●Como listar containers? docker container list ● Como parar? docker stop ● Como reiniciar? docker restart ● Como remover? docker rm
  • 15.
  • 16.
    Docker - Entrandonum container “Quero criar minha própria imagem, pois nenhuma imagem que procurei atendeu meus requisitos.” Podemos usar o comando docker attach para trabalhar no container.
  • 17.
  • 18.
    Docker - Okay,tudo pronto, e agora? Agora temos que “empacotar” o seu container em uma imagem. Usamos então o comando docker commit para gerar a imagem.
  • 19.
  • 20.
    Docker - Terminologia Dockerfileé: ● Simples arquivo texto onde contém uma lista de comandos. ● É uma forma simples de automatizar a criação de imagens. ● Basicamente são comandos em Linux, então não é necessário aprender uma nova sintaxe.
  • 21.
    Docker - Nginx #imagem base FROM nginx # copiando arquivo para um diretório específico COPY index.html /usr/share/nginx/html # qual porta queremos que seja publicada EXPOSE 80 # rodando aplicação CMD ["nginx", "-g", "daemon off;"]
  • 22.
    Docker - PHPCLI # imagem base FROM php:7.1-cli # comando que irá rodar ao iniciar o container CMD ["php", "--version"]
  • 23.
    Docker - Volumes Queremosprogramar localmente, ou temos dados para enviar para dentro do container docker run -it -v /path/to/file:/file tchelinux-app command /file
  • 24.