Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting...

138
1 Meetup Mão na massa – DOCKER - DF Docker – Mão na massa Eustáquio Mendes Guimarães – [email protected]

Transcript of Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting...

Page 1: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

1Meetup Mão na massa – DOCKER - DF

Docker – Mão na massa

Eustáquio Mendes Guimarães – [email protected]

Page 2: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

2Meetup Mão na massa – DOCKER - DF

Nadando . . .

● HistóriaHistória● FuncionamentoFuncionamento● Utilização – BásicoUtilização – Básico● Por que ? Quando ?Por que ? Quando ?● Ate aonde …Ate aonde …● Quem está nadando junto ?Quem está nadando junto ?● FerramentasFerramentas● Comunidades e LinksComunidades e Links

Page 3: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

3Meetup Mão na massa – DOCKER - DF

Nadando . . .

● História

O primeiro anúncio do Docker foi feito em 15 de Março de 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado, como uma engine para deploy.

E em abril de 2015 a empresa já vale 1 bilhão de dólares.

Em outubro de 2015 já existem vários projetos: Docker Compose, Docker Swarm, Docker Hub Enterprise, Docker Machine, Docker engine, Docker Hub, Docker Registry, Kitematic.

Page 4: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

4Meetup Mão na massa – DOCKER - DF

Nadando . . .

● HistóriaDocker é um projeto open source (Apache License 2.0) para empacotar, enviar e executar diversas aplicações em containers.

Containers docker são independente do hardware e plataforma, dessa forma sendo executado em diversos ambientes. Isto os torna uma excelente ferramenta para deploy e escalabilidade de aplicativos.

Page 5: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

5Meetup Mão na massa – DOCKER - DF

Nadando . . . ● História

Page 6: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

6Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Funcionamento

Quando o kernel do sistema operacional é capaz de permitir múltiplas instâncias isoladas em user-space, ao invés de somente uma, cada instância pode ser chamada de container ou software container).

Por compartilharem o mesmo kernel e parte dos recursos, containers consomem muito menos recursos do que uma máquina virtual.

Page 7: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

7Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 8: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

8Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Por que ?

* Rápida aprendizagem/utilização se comparado com outras tecnologias de containers (LXC, cgroups, etc)

* Comunidade muito ativa

* Repositório publico de imagens, com compartilhamento e colaboração

* Integração com ferramentas de DevOps (Zabbix, Puppet, Chef, Vagrant, Ansible)* Excelente desempenho e economia de recursos (espaço em disco, processamento, memória)* Versionamento de imagens e cache

Page 9: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

9Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Por que ? E quando ?

* Precisa de outro sistema operacional ou distribuições além do GNU/Linux

* Versões diferentes do kernel linux

* Necessita de homogeneidade da infraestrutura

* Personalização da imagem que será construída (ex.: Debian)

* Aumento da curva de aprendizagem (imagens personalizadas, logs, cron, rede)

* Constante evolução (ex.: rede)

Page 10: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

10Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Quem esta nadando junto ? ? ?

* Microsoft/Azure e Windows Server 2012

* Intel

* ebay

* Atmel

* Spotfy

* ASK.fm

* 500px

* e ….

Page 11: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

11Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 12: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

12Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Ferramentas

Page 13: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

13Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Ferramentas

Page 14: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

14Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 15: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

15Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 16: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

16Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 17: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

17Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 18: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

18Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 19: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

19Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 20: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

20Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 21: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

21Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 22: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

22Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . .

Page 23: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

23Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . .

O Docker há algum tempo já deixou de ser apenas um software para virar um conjunto deles. Um ecosistema.

● Docker Engine: É o software base de toda solução. É tanto o daemon que responsável pelo os containers como também é o cliente usado para enviar comandos pro daemon.

● Docker Compose: É o ferramenta responsável pela definição e execução de múltiplos containers com base em arquivo de definição.

● Docker Machine: é a ferramenta que possibilita criar e manter ambientes docker em máquinas virtuais, ambientes de nuvem e até mesmo em máquina física.

Page 24: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

24Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Distribuicao Debian – Jessie 8.5Usuário – dockerdf Senha – dockerdf

Usuário – rootSenha – root

Page 25: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

25Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação Tipo 1:

su ­ root

ou no caso da utilização de sudo

sudo su ­ root

Agora execute o comando abaixo:

wget ­qO­ https://get.docker.com/ | sh

Esse procedimento demorará um pouco. Após terminar teste executando o comando abaixo:

docker run hello­world

Page 26: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

26Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . root@dockerdf:/etc/apt# docker run hello­worldUnable to find image 'hello­world:latest' locallylatest: Pulling from library/hello­worldc04b14da8d14: Pull complete Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9Status: Downloaded newer image for hello­world:latest

Hello from Docker!This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello­world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the    executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it    to your terminal.

To try something more ambitious, you can run an Ubuntu container with: $ docker run ­it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com

For more examples and ideas, visit: https://docs.docker.com/engine/userguide/

Page 27: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

27Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . root@dockerdf:~# docker run ­it ubuntu bashroot@f90f50fbc022:/# root@f90f50fbc022:/# more /etc/debian_version stretch/sidroot@f90f50fbc022:/#

#Ambiente dockerizado – Ubuntu Server

Ou … 

docker pull ubuntu 

#Dessa forma o docker efetuara o download do Docker Hub ­ https://hub.docker.com/

#O download foi bem sucedido??? Execute …

root@dockerdf:~# docker run ubuntu cat /etc/debian_versionstretch/sid

Executar o comando cat /etc/debian_version dentro do container do ubuntu

Page 28: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

28Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação tipo 02

Para os usuários do Debian Wheezy, backports deve estar disponível. Para habilitar backports em Wheezy:Entrar na sua máquina e abrir um terminal com sudo ou raiz privilégios.Abra o arquivo /etc/apt/sources.list.d/backports.list em seu editor favorito.Se o arquivo não existir, criá­la.Remova todas as entradas existentes.Adicione uma entrada para backports no Debian Wheezy.  Um exemplo de entrada:

deb http://http.debian.net/debian wheezy­backports main  #Ajuste de acordo com a sua versão do Debian

apt­get updateapt­get install apt­transport­https ca­certificatesapt­key adv ­­keyserver hkp://p80.pool.sks­keyservers.net:80 ­­recv­keys 58118E89F3A912897C070ADBF76221572C52609D

Page 29: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

29Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação tipo 02 ­ continuação

vi/nano/mcedit /etc/apt/sources.list.d/docker.list

#Adicioine de acordo com a sua versão

    ­ Debian Wheezy

    deb https://apt.dockerproject.org/repo debian­wheezy main

    ­ Debian Jessie

    deb https://apt.dockerproject.org/repo debian­jessie main

    ­ Debian Stretch/Sid

    deb https://apt.dockerproject.org/repo debian­stretch main

apt­get update

sudo apt­get install docker­enginesudo service docker startsudo docker run hello­world

Page 30: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

30Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação Composer:

root@dockerdf:~# curl ­L https://github.com/docker/compose/releases/download/1.8.0/docker­compose­`uname ­s`­`uname ­m` > /usr/local/bin/docker­compose  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100   600    0   600    0     0    479      0 ­­:­­:­­  0:00:01 ­­:­­:­­   478100 7783k  100 7783k    0     0   792k      0  0:00:09  0:00:09 ­­:­­:­­ 1129k

root@dockerdf:~# chmod +x /usr/local/bin/docker­composeroot@dockerdf:~# docker­compose versiondocker­compose version 1.8.0, build f3628c7docker­py version: 1.9.0CPython version: 2.7.9OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

 

https://docs.docker.com/compose/install/

Page 31: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

31Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação Docker Machine:

root@dockerdf:~#  curl ­L https://github.com/docker/machine/releases/download/v0.7.0/docker­machine­`uname ­s`­`uname ­m` > /usr/local/bin/docker­machine  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100   600    0   600    0     0    851      0 ­­:­­:­­ ­­:­­:­­ ­­:­­:­­   851100 34.5M  100 34.5M    0     0  1442k      0  0:00:24  0:00:24 ­­:­­:­­ 1242kroot@dockerdf:~# root@dockerdf:~# chmod +x /usr/local/bin/docker­machineroot@dockerdf:~# docker­machine versiondocker­machine version 0.7.0, build a650a40

 

Page 32: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

32Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker:

Para listar as imagens que seu Docker host tem localmente execute o comando abaixo:

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBroot@dockerdf:~# 

As imagens retornadas estão presentes no seu Docker host e não demandarão nenhum download.A não ser que você deseje atualizá­la, caso exista o que possa ser atualizado. Para atulizar a imagem basta executar o comando….

docker pull nome_da_imagemNo caso acima, ubuntu, então …

root@dockerdf:~# docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntu

Digest: sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54bStatus: Image is up to date for ubuntu:latest

 

Page 33: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

33Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker:

Inspecionar a imagem que acabou de atualizar, basta utilizar o comando… 

docker inspect nome_da_imagem

root@dockerdf:~# docker inspect ubuntu[    {        "Id": "sha256:42118e3df429f09ca581a9deb3df274601930e428e452f7e4e9f1833c56a100a",        "RepoTags": [            "ubuntu:latest"        ],        "RepoDigests": [            "ubuntu@sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54b"        ],        "Parent": "",        "Comment": "",        "Created": "2016­07­22T15:19:31.961254889Z",        "Container": "18623e507b31713ccb54bb249bd40a3a9f0acfe50ca1a6615729ea983b6a8011",        "ContainerConfig": {            "Hostname": "827f45722fd6",            "Domainname": "",            "User": "",            "AttachStdin": false,            "AttachStdout": false,            "AttachStderr": false,            "Tty": false,            "OpenStdin": false,            "StdinOnce": false,            "Env": [

 

Page 34: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

34Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker:

     "Architecture": "amd64",        "Os": "linux",        "Size": 124796948,        "VirtualSize": 124796948,        "GraphDriver": {            "Name": "aufs",            "Data": null        },        "RootFS": {            "Type": "layers",            "Layers": [                "sha256:ea9f151abb7e06353e73172dad421235611d4f6d0560ec95db26e0dc240642c1",                "sha256:0185b3091e8ee299850b096aeb9693d7132f50622d20ea18f88b6a73e9a3309c",                "sha256:98305c1a8f5e5666d42b578043e3266f19e22512daa8c6b44c480b177f0bf006",                "sha256:9a39129ae0ac2fccf7814b8e29dde5002734c1699d4e9176061d66f5b1afc95c"            ]        }    }]

 

Page 35: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

35Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker… Como?:

docker run <parâmetros> <imagem> <CMD> <argumentos>

Os parâmetros mais utilizados na execução do container são:Parâmetro | Explicação——–|———— ­d | Execução do container em background ­i | Modo interativo. Mantém o STDIN aberto mesmo sem console anexado ­t | Aloca uma pseudo TTY –rm | Automaticamente remove o continer após finalização (Não funciona com ­d) –name | Nomear o container ­v | Mapeamento de volume ­p | Mapemento de porta ­m | Limitar o uso de memória RAM ­c | Balancear o uso de CPU

 

Page 36: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

36Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker… Como?:

root@dockerdf:~# docker run ­it ­­rm ­­name meu_ubuntu ubuntu bashroot@0cb5acd9ff74:/# root@0cb5acd9ff74:/# exit

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBroot@dockerdf:~# 

 

Page 37: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

37Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Verificando a lista de containers:

docker ps <parâmetros>Os parâmetros mais utilizados na execução do container são:Parâmetro | Explicação———–|———— ­a | Lista todos os containers, inclusive os desligados ­l | Lista os ultimos containers, inclusive os desligados ­n | Lista os últimos N containers, inclusive os desligados ­q | Lista apenas os ids dos containers, ótimo para utilização em scripts

 

https://docs.docker.com/engine/reference/commandline/ps/

Page 38: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

38Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Verificando a lista de containers:

root@dockerdf:~# docker ps ­aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES94c1b8d15ccb        ubuntu              "cat /etc/debian_vers"   9 minutes ago       Exited (0) 9 minutes ago                           silly_chandrasekhar9546bf4f1edf        ubuntu              "cat /etc/debian­vers"   9 minutes ago       Exited (1) 9 minutes ago                           determined_bardeen88372a09c2fb        ubuntu              "cat /etc/debian"        9 minutes ago       Exited (1) 9 minutes ago                           adoring_ritchie34672e88d128        ubuntu              "cat /etc/lsb­release"   9 minutes ago       Exited (1) 9 minutes ago                           stupefied_poincare5859d61c6aec        ubuntu              "/bin/bash"              10 minutes ago      Exited (0) 10 minutes ago                          trusting_mestorff90f50fbc022        ubuntu              "bash"                   About an hour ago   Exited (0) About an hour ago                       mad_goldstinea2f4ba040c29        ubuntu              "bash"                   10 hours ago        Exited (0) 10 hours ago                            zen_torvaldsb7534167f7ef        hello­world         "/hello"                 10 hours ago        Exited (0) 10 hours ago                            awesome_thompsonroot@dockerdf:~# 

  https://docs.docker.com/engine/reference/commandline/ps/

Page 39: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

39Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Verificando a lista de containers:

root@dockerdf:~# docker ps ­lCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES94c1b8d15ccb        ubuntu              "cat /etc/debian_vers"   9 minutes ago       Exited (0) 9 minutes ago                       silly_chandrasekharroot@dockerdf:~# root@dockerdf:~# docker ps ­nflag needs an argument: 'n' in ­nSee 'docker ps ­­help'.root@dockerdf:~# docker ps ­n 3CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES94c1b8d15ccb        ubuntu              "cat /etc/debian_vers"   9 minutes ago       Exited (0) 9 minutes ago                        silly_chandrasekhar9546bf4f1edf        ubuntu              "cat /etc/debian­vers"   10 minutes ago      Exited (1) 10 minutes ago                       determined_bardeen88372a09c2fb        ubuntu              "cat /etc/debian"        10 minutes ago      Exited (1) 10 minutes ago                       adoring_ritchieroot@dockerdf:~# 

  https://docs.docker.com/engine/reference/commandline/ps/

Page 40: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

40Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Gerenciamento de containers:

Caso deseje desligar o container basta utilizar o comando docker stop nome_do_container

Ele recebe como argumento o ID ou nome do container. Ambos dados podem ser obtidos com o docker ps

Caso deseje ligar o container basta utilizar o comando docker start nome_do_container

Vale ressaltar que a ideia dos containers é serem descartáveis, ou seja, caso você esteja usando o mesmo container por muito tempo sem descartá­lo, você provavelmente estará usando o Docker incorretamente. O Docker não é uma máquina, é um processo em execução e como todo processo ele deve ser descartado para que outro possa 

tomar seu lugar na reinicialização do mesmo.

Page 41: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

41Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Criando sua própria imagem:

imagem é a classe e o container o objeto, ou seja, a imagem é a abstração da infraestrutura em um estado somente leitura, que é de onde será instanciado o container.Todo container é iniciado a partir de uma imagem, dessa forma podemos concluir que nunca teremos uma imagem em execução.Um container só pode ser iniciado a partir de uma única imagem, ou seja, caso deseje umcomportamento diferente será necessário customizar a imagem.

As imagens oficiais da docker são aquelas que não tem usuário em seu nome, ou seja, a imagem “ubuntu:16.04  é ′′oficial, por outro lado a imagem “nuagebec/ubuntu” não é oficial. Essa segunda imagem é mantida pelo usuário nuagebec, que mantém muitas outras imagens não oficiais.

As imagens oficiais são mantidas pela empresa docker e são disponibilizadas na nuvem docker.

Nome da imagemO nome de uma imagem oficial é composta de duas partes. A primeira é o que a documentação chama de “repositório” e a segunda é a “tag”. No caso da imagem “ubuntu:14.04”, ubuntu é o repositório e 14.04 é a tag.

Page 42: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

42Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Criando sua própria imagem:

Para visualizar todas as imagens que se encontram localmente na sua estação nesse momento:

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kB

Há duas formas de criar imagens customizadas: Com commit e com Dockerfile.

Page 43: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

43Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Criando imagens com commit

É possível criar imagens executando o comando commit relacionado a um container, ou seja, esse comando obtera o status atual do container escolhido e criará uma imagem a partir dessa informação.

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBroot@dockerdf:~# docker run ­it ­­name ubunudf ubuntu bashroot@334aa1d388e8:/# 

Instalar o nginx nele

root@334aa1d388e8:/# apt­get update &&  apt­get install nginx ­y && exit

Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]Get:2 http://archive.ubuntu.com/ubuntu xenial­updates InRelease [95.7 kB]Get:3 http://archive.ubuntu.com/ubuntu xenial­security InRelease [94.5 kB]Get:4 http://archive.ubuntu.com/ubuntu xenial/main Sources [1103 kB]Get:5 http://archive.ubuntu.com/ubuntu xenial/restricted Sources [5179 B]                                                                                                      Get:6 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB]    . . .                                      

Page 44: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

44Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Criando imagens com commit

Setting up nginx­common (1.10.0­0ubuntu0.16.04.2) ...Setting up nginx­core (1.10.0­0ubuntu0.16.04.2) ...invoke­rc.d: could not determine current runlevelinvoke­rc.d: policy­rc.d denied execution of start.Setting up nginx (1.10.0­0ubuntu0.16.04.2) ...Processing triggers for libc­bin (2.23­0ubuntu3) ...Processing triggers for sgml­base (1.26+nmu4ubuntu1) ...Processing triggers for systemd (229­4ubuntu6) ...exitroot@dockerdf:~# Saiu do Container

root@dockerdf:~# docker stop ubunudfubunudfroot@dockerdf:~# docker commit ubunudf ubuntudf:nginx  Container_criado imagem_criada sha256:6768ec58b858b02e01c6ed894edead23987cb3043e863621112b697fc3405bebroot@dockerdf:~# 

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED              SIZEubuntudf            nginx               6768ec58b858        About a minute ago   220.4 MBubuntu              latest              42118e3df429        2 weeks ago          124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago          1.848 kBroot@dockerdf:~# 

Page 45: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

45Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E se deu certo  . . . 

root@dockerdf:~# docker run ­it ­­rm ubuntudf:nginx dpkg ­l nginx Executou o comando dentro do containerDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf­files/Unpacked/halF­conf/Half­inst/trig­aWait/Trig­pend|/ Err?=(none)/Reinst­required (Status,Err: uppercase=bad)||/ Name           Version      Architecture Description+++­==============­============­============­=================================ii  nginx          1.10.0­0ubun all          small, powerful, scalable web/proroot@dockerdf:~# 

Nota:O método commit não é a melhor opção para criar imagens, pois como pudemos verificar, o processo de modificação da imagem é completamente manual e apresenta certa dificuldade para rastrear as mudanças que foram efetuadas, uma vez que o que foi modificado manualmente não é registrado automaticamente na 

estrutura do docker.

Page 46: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

46Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente . . . 

Dockerfile na verdade representa a exata diferença entre uma determinada imagem, que aqui chamamos de base, e a imagem que se deseja criar.

Page 47: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

47Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente . . . 

root@dockerdf:~# touch teste_metuproot@dockerdf:~# vi Dockerfileroot@dockerdf:~# more Dockerfile FROM ubuntuRUN apt­get update && apt­get install nginx ­yCOPY teste_metup /tmp/teste_metupCMD bashroot@dockerdf:~#

FROM é usado para informar qual imagem será utilizada.RUN é usado para informar quais comandos serão executados nesse ambiente para efetuar asmudanças necessárias na infraestrutura do sistema.COPY é usado para copiar arquivos da estação para a imagem. Mas pode ser utilizada para enviar arquivos de configuração de ambiente e códigos para serem executados em serviços de aplicação.CMD é usado informar qual comando será executado por padrão.

Agora, construir:

root@dockerdf:~# docker build ­t ubuntunovo:web_auto .  ­t nome_imagem:tag Observe o . ao fonal da linha para informar que tudo do diretório atual será utilizadoSending build context to Docker daemon 9.728 kBStep 1 : FROM ubuntu ­­­> 42118e3df429Step 2 : RUN apt­get update && apt­get install nginx ­y ­­­> Running in 3e6c3cfcd9d9Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]

Page 48: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

48Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente . . . 

Step 3 : COPY teste_metup /tmp/teste_metup ­­­> 079c2612224eRemoving intermediate container 894932c50f21Step 4 : CMD bash ­­­> Running in 7dfcbb3ecf95 ­­­> d9ce37133936Removing intermediate container 7dfcbb3ecf95Successfully built d9ce37133936   ­  Build criadaroot@dockerdf:~# root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntunovo          web_auto            d9ce37133936        13 minutes ago      220.4 MBubuntudf            nginx               6768ec58b858        35 minutes ago      220.4 MBubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBroot@dockerdf:~# root@dockerdf:~# docker run ­it ­­rm ubuntunovo:web_auto ls ­l /tmptotal 0­rw­r­­r­­ 1 root root 0 Aug  6 08:07 teste_metup

Page 49: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

49Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente de novo . . . 

O resultado de cada instrução do Dockerfile é armazenado em um cache local, ou seja, caso não seja modificado na próxima criação da imagem (build) tudo estará no cache, mas caso algo seja modificado apenas a instrução modificada e as posteriores serão executadas novamente.

root@dockerdf:~# more Dockerfile FROM ubuntuRUN apt­get update && apt­get install nginx ­yRUN apt­get install php7.0 ­yCOPY teste_metup /tmp/teste_metupCMD bashroot@dockerdf:~# 

Page 50: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

50Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente de novo . . . 

root@dockerdf:~# docker build ­t ubuntunovo:web_auto .Sending build context to Docker daemon 11.78 kBStep 1 : FROM ubuntu ­­­> 42118e3df429Step 2 : RUN apt­get update && apt­get install nginx ­y ­­­> Using cache ­­­> 8b4bb9bc5548Step 3 : RUN apt­get install php7.0 ­y ­­­> Running in c194608952b2Reading package lists...Building dependency tree...Reading state information...The following additional packages will be installed:  file libbsd0 libedit2 libmagic1 mime­support php­common php7.0­cli  php7.0­common php7.0­fpm php7.0­json php7.0­opcache php7.0­readline psmiscSuggested packages:  php­pearThe following NEW packages will be installed:  file libbsd0 libedit2 libmagic1 mime­support php­common php7.0 php7.0­cli  php7.0­common php7.0­fpm php7.0­json php7.0­opcache php7.0­readline psmisc0 upgraded, 14 newly installed, 0 to remove and 5 not upgraded.Need to get 3939 kB of archives.After this operation, 19.0 MB of additional disk space will be used.Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmagic1 amd64 1:5.25­2ubuntu1 [216 kB]

Page 51: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

51Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E aonde se guarda todas essas alterações? 

Page 52: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

52Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

A rede na verdade é uma abstração criada para facilitar o gerenciamento da comunicação de dados entre containers e os nós externos ao ambiente docker

O docker é disponibilizado com três redes por padrão. Essas redes oferecem configurações específicaspara gerenciamento do tráfego de dados.

root@dockerdf:~# docker network lsNETWORK ID          NAME                DRIVER              SCOPE1d14f4906e3c        bridge              bridge              local               de3ae5b6d137        host                host                local               baea6f843214        none                null                local 

Como exemplo de utilização de uma rede criada por usuário, primeiro vamos criar a rede chamadaisolada_nw com o driver bridge

root@dockerdf:~# docker network create ­­driver bridge isolada_nw330dbf27cef157cba21c373e782253931314b5643a2365b93219ba6614363597root@dockerdf:~# docker network lsNETWORK ID          NAME                DRIVER              SCOPE1d14f4906e3c        bridge              bridge              local               de3ae5b6d137        host                host                local               330dbf27cef1        isolada_nw          bridge              local               baea6f843214        none                null                local               root@dockerdf:~# 

Page 53: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

53Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

root@dockerdf:~# docker run ­d ­­name bd ­e MYSQL_ROOT_PASSWORD=minhasenha mysqlUnable to find image 'mysql:latest' locallylatest: Pulling from library/mysql357ea8c3d80b: Pull complete 256a92f57ae8: Pull complete d5ee0325fe91: Pull complete a15deb03758b: Pull complete 7b8a8ccc8d50: Pull complete 1a40eeae36e9: Pull complete 833539b56478: Pull complete 4f350efbb7e5: Pull complete 266f161e49c6: Pull complete 2d0f7f51c888: Pull complete 13b44531c4a7: Pull complete Digest: sha256:e6dc999f4e2d5982e74a008ff08c0641f0832e19339aaf4f4c2bc2ca426e96c6Status: Downloaded newer image for mysql:latest5b08c3672ecc852f9fa5759985ba5822a645e25052abe55ddce1bd353e63f022root@dockerdf:~# 

Page 54: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

54Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

root@dockerdf:~# docker run ­d ­p 80:80 ­­name app ­­link bd tutum/apache­phpUnable to find image 'tutum/apache­php:latest' locallylatest: Pulling from tutum/apache­php

6ffe5d2d6a97: Pull complete f4e00f994fd4: Pull complete e99f3d1fc87b: Pull complete a3ed95caeb02: Pull complete c10ab9e629d8: Pull complete 5c65b067601c: Pull complete 2cbc3ddde9c1: Pull complete 9a5e857e989f: Pull complete 7bd95ceec22a: Pull complete c27094051f1e: Pull complete d820ec68d287: Pull complete Digest: sha256:6d21118f57fd5415638b0744be140c16e40353e2bc06659c8c8ffeadae648cfcStatus: Downloaded newer image for tutum/apache­php:latestroot@dockerdf:~# 

Page 55: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

55Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE<none>              <none>              8781fc8964a1        39 minutes ago      240.7 MBubuntunovo          web_auto            d9ce37133936        About an hour ago   220.4 MBubuntudf            nginx               6768ec58b858        About an hour ago   220.4 MBmysql               latest              43c70d2fa278        4 days ago          384.5 MBubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBalpine              latest              4e38e38c8ce0        6 weeks ago         4.799 MBtutum/apache­php    latest              2e233ad9329b        13 months ago       244.7 MBroot@dockerdf:~# 

root@dockerdf:~# docker exec ­it app ping bdPING bd (172.17.0.2) 56(84) bytes of data.64 bytes from bd (172.17.0.2): icmp_seq=1 ttl=64 time=0.165 ms64 bytes from bd (172.17.0.2): icmp_seq=2 ttl=64 time=0.174 ms64 bytes from bd (172.17.0.2): icmp_seq=3 ttl=64 time=0.136 ms^C­­­ bd ping statistics ­­­3 packets transmitted, 3 received, 0% packet loss, time 2001msrtt min/avg/max/mdev = 0.136/0.158/0.174/0.019 msroot@dockerdf:~# 

Page 56: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

56Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

Iniciar um container na rede, chamada isolada_nw,

root@dockerdf:~# docker run ­itd ­­net isolada_nw alpine shUnable to find image 'alpine:latest' locallylatest: Pulling from library/alpine

e110a4a17941: Pull complete Digest: sha256:3dcdb92d7432d56604d4545cbd324b14e647b313626d99b889d0626de158f73aStatus: Downloaded newer image for alpine:latest3e9c00abf1e4b63c238dd31661bc33436a2035bb1a6d64776878435c5d3ed526root@dockerdf:~# 

https://hub.docker.com/_/alpine/Linux Alpine com 5MB

Page 57: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

57Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

root@dockerdf:~# docker network inspect isolada_nw[    {        "Name": "isolada_nw",        "Id": "330dbf27cef157cba21c373e782253931314b5643a2365b93219ba6614363597",        "Scope": "local",        "Driver": "bridge",        "EnableIPv6": false,        "IPAM": {            "Driver": "default",            "Options": {},            "Config": [                {                    "Subnet": "172.18.0.0/16",                    "Gateway": "172.18.0.1"                }            ]        },        "Internal": false,        "Containers": {},        "Options": {},        "Labels": {}    }]

Page 58: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

58Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

Overlay permite comunicação entre hosts docker, ou seja, com sua utilização os containers de um determinado host docker poderão acessar nativamente containers de um outro ambiente docker.

Page 59: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

59Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Cansei, relaxar . . . 

root@dockerdf:~# mkdir relaxarroot@dockerdf:~# cd relaxarroot@dockerdf:~/relaxar# vi Dockerfileroot@dockerdf:~/relaxar# more Dockerfile FROM ubuntuMAINTAINER DockerDF <[email protected]>RUN ["apt­get", "update"]RUN ["apt­get", "install", "­y", "frozen­bubble"]RUN ["useradd", "player", "­u", "1000", "­g", "100", "­m", "­d", "/home/player", "­s", "/bin/bash"]USER player# ENTRYPOINT define o comando que executará quando o contêiner# for executado a partir da imagem.ENTRYPOINT ["/usr/games/frozen­bubble"] ­­­> Running in 9b541ce680b9 ­­­> 615b31d902d3Removing intermediate container 9b541ce680b9Step 7 : ENTRYPOINT /usr/games/frozen­bubble ­­­> Running in c80cb93f136d ­­­> ece9fc943718Removing intermediate container c80cb93f136dSuccessfully built ece9fc943718

Page 60: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

60Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Cansei, relaxar . . . 

root@dockerdf:~/relaxar# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZErelaxar             game                ece9fc943718        4 minutes ago       312.1 MB

root@dockerdf:~/relaxar# docker run ­ti ­­rm ­e "DISPLAY=unix:0" ­v /tmp/.X11­unix:/tmp/.X11­unix ­v $HOME/Pictures:/home/player relaxar:game

Page 61: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

61Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . .

Page 62: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

62Meetup Mão na massa – DOCKER - DF

● E agora ? ? ?

Chegamos .. . e ai ?

http://www.meetup.com/pt-BR/Docker-Meetup/

Page 63: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

63Meetup Mão na massa – DOCKER - DF

● E agora ? ? ?

Chegamos .. . e ai ?

https://www.facebook.com/dockerdf/

Page 64: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

64Meetup Mão na massa – DOCKER - DF

● E agora ? ? ?

Chegamos .. . e ai ?

https://dockerdf.slack.com

Page 65: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

65Meetup Mão na massa – DOCKER - DF

● E agora ? ? ?

Chegamos .. . e ai ?

Page 66: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

66Meetup Mão na massa – DOCKER - DF

Chegamos .. . e ai ?

Page 67: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

67Meetup Mão na massa – DOCKER - DF

● ReferênciasPalestra de Solomon Hykes - https://youtu.be/wW9CAH9nSLs

Site oficial - https://www.docker.com/

Livro do Gomex - https://leanpub.com/dockerparadesenvolvedores

Site do Gomex - http://techfree.com.br/

Treinamento do Docker - https://training.docker.com/

Mundo Docker - http://www.mundodocker.com.br/o-que-e-docker/

Devops Brasil - http://devops-br.org/

Primeiro Passo - http://www.diego-garcia.info/2015/02/15/docker-por-onde-comecar/

Segundo passo - http://blog.concretesolutions.com.br/2015/07/como-dockerizar-aplicacao-linux/

Nadando . . .

Page 68: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

68Meetup Mão na massa – DOCKER - DF

● ReferênciasTelegram - https://telegram.me/dockerbr

Luiz Carlos Faria - http://luizcarlosfaria.net/docker/

Devops e Infra Ágil - http://gutocarvalho.net/octopress/2013/03/16/o-que-e-um-devops-afinal/

DevopsDay – Porto Alegre - https://goo.gl/asyvdP

LinuxTips - https://goo.gl/htkaLM

Nadando . . .

Page 69: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

69Meetup Mão na massa – DOCKER - DF

FIM

Page 70: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

1Meetup Mão na massa – DOCKER - DF

Docker – Mão na massa

Eustáquio Mendes Guimarães – [email protected]

Page 71: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

2Meetup Mão na massa – DOCKER - DF

Nadando . . .

● HistóriaHistória● FuncionamentoFuncionamento● Utilização – BásicoUtilização – Básico● Por que ? Quando ?Por que ? Quando ?● Ate aonde …Ate aonde …● Quem está nadando junto ?Quem está nadando junto ?● FerramentasFerramentas● Comunidades e LinksComunidades e Links

Page 72: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

3Meetup Mão na massa – DOCKER - DF

Nadando . . .

● História

O primeiro anúncio do Docker foi feito em 15 de Março de 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado, como uma engine para deploy.

E em abril de 2015 a empresa já vale 1 bilhão de dólares.

Em outubro de 2015 já existem vários projetos: Docker Compose, Docker Swarm, Docker Hub Enterprise, Docker Machine, Docker engine, Docker Hub, Docker Registry, Kitematic.

Page 73: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

4Meetup Mão na massa – DOCKER - DF

Nadando . . .

● HistóriaDocker é um projeto open source (Apache License 2.0) para empacotar, enviar e executar diversas aplicações em containers.

Containers docker são independente do hardware e plataforma, dessa forma sendo executado em diversos ambientes. Isto os torna uma excelente ferramenta para deploy e escalabilidade de aplicativos.

Page 74: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

5Meetup Mão na massa – DOCKER - DF

Nadando . . . ● História

Page 75: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

6Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Funcionamento

Quando o kernel do sistema operacional é capaz de permitir múltiplas instâncias isoladas em user-space, ao invés de somente uma, cada instância pode ser chamada de container ou software container).

Por compartilharem o mesmo kernel e parte dos recursos, containers consomem muito menos recursos do que uma máquina virtual.

Page 76: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

7Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 77: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

8Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Por que ?

* Rápida aprendizagem/utilização se comparado com outras tecnologias de containers (LXC, cgroups, etc)

* Comunidade muito ativa

* Repositório publico de imagens, com compartilhamento e colaboração

* Integração com ferramentas de DevOps (Zabbix, Puppet, Chef, Vagrant, Ansible)* Excelente desempenho e economia de recursos (espaço em disco, processamento, memória)* Versionamento de imagens e cache

Page 78: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

9Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Por que ? E quando ?

* Precisa de outro sistema operacional ou distribuições além do GNU/Linux

* Versões diferentes do kernel linux

* Necessita de homogeneidade da infraestrutura

* Personalização da imagem que será construída (ex.: Debian)

* Aumento da curva de aprendizagem (imagens personalizadas, logs, cron, rede)

* Constante evolução (ex.: rede)

Page 79: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

10Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Quem esta nadando junto ? ? ?

* Microsoft/Azure e Windows Server 2012

* Intel

* ebay

* Atmel

* Spotfy

* ASK.fm

* 500px

* e ….

Page 80: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

11Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 81: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

12Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Ferramentas

Page 82: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

13Meetup Mão na massa – DOCKER - DF

Nadando . . .

● Ferramentas

Page 83: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

14Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 84: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

15Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 85: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

16Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 86: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

17Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 87: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

18Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 88: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

19Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 89: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

20Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 90: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

21Meetup Mão na massa – DOCKER - DF

Nadando . . .

Page 91: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

22Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . .

Page 92: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

23Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . .

O Docker há algum tempo já deixou de ser apenas um software para virar um conjunto deles. Um ecosistema.

● Docker Engine: É o software base de toda solução. É tanto o daemon que responsável pelo os containers como também é o cliente usado para enviar comandos pro daemon.

● Docker Compose: É o ferramenta responsável pela definição e execução de múltiplos containers com base em arquivo de definição.

● Docker Machine: é a ferramenta que possibilita criar e manter ambientes docker em máquinas virtuais, ambientes de nuvem e até mesmo em máquina física.

Page 93: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

24Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Distribuicao Debian – Jessie 8.5Usuário – dockerdf Senha – dockerdf

Usuário – rootSenha – root

Page 94: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

25Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação Tipo 1:

su ­ root

ou no caso da utilização de sudo

sudo su ­ root

Agora execute o comando abaixo:

wget ­qO­ https://get.docker.com/ | sh

Esse procedimento demorará um pouco. Após terminar teste executando o comando abaixo:

docker run hello­world

Page 95: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

26Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . root@dockerdf:/etc/apt# docker run hello­worldUnable to find image 'hello­world:latest' locallylatest: Pulling from library/hello­worldc04b14da8d14: Pull complete Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9Status: Downloaded newer image for hello­world:latest

Hello from Docker!This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello­world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the    executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it    to your terminal.

To try something more ambitious, you can run an Ubuntu container with: $ docker run ­it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com

For more examples and ideas, visit: https://docs.docker.com/engine/userguide/

Page 96: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

27Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . root@dockerdf:~# docker run ­it ubuntu bashroot@f90f50fbc022:/# root@f90f50fbc022:/# more /etc/debian_version stretch/sidroot@f90f50fbc022:/#

#Ambiente dockerizado – Ubuntu Server

Ou … 

docker pull ubuntu 

#Dessa forma o docker efetuara o download do Docker Hub ­ https://hub.docker.com/

#O download foi bem sucedido??? Execute …

root@dockerdf:~# docker run ubuntu cat /etc/debian_versionstretch/sid

Executar o comando cat /etc/debian_version dentro do container do ubuntu

Page 97: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

28Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação tipo 02

Para os usuários do Debian Wheezy, backports deve estar disponível. Para habilitar backports em Wheezy:Entrar na sua máquina e abrir um terminal com sudo ou raiz privilégios.Abra o arquivo /etc/apt/sources.list.d/backports.list em seu editor favorito.Se o arquivo não existir, criá­la.Remova todas as entradas existentes.Adicione uma entrada para backports no Debian Wheezy.  Um exemplo de entrada:

deb http://http.debian.net/debian wheezy­backports main  #Ajuste de acordo com a sua versão do Debian

apt­get updateapt­get install apt­transport­https ca­certificatesapt­key adv ­­keyserver hkp://p80.pool.sks­keyservers.net:80 ­­recv­keys 58118E89F3A912897C070ADBF76221572C52609D

Page 98: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

29Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação tipo 02 ­ continuação

vi/nano/mcedit /etc/apt/sources.list.d/docker.list

#Adicioine de acordo com a sua versão

    ­ Debian Wheezy

    deb https://apt.dockerproject.org/repo debian­wheezy main

    ­ Debian Jessie

    deb https://apt.dockerproject.org/repo debian­jessie main

    ­ Debian Stretch/Sid

    deb https://apt.dockerproject.org/repo debian­stretch main

apt­get update

sudo apt­get install docker­enginesudo service docker startsudo docker run hello­world

Page 99: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

30Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação Composer:

root@dockerdf:~# curl ­L https://github.com/docker/compose/releases/download/1.8.0/docker­compose­`uname ­s`­`uname ­m` > /usr/local/bin/docker­compose  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100   600    0   600    0     0    479      0 ­­:­­:­­  0:00:01 ­­:­­:­­   478100 7783k  100 7783k    0     0   792k      0  0:00:09  0:00:09 ­­:­­:­­ 1129k

root@dockerdf:~# chmod +x /usr/local/bin/docker­composeroot@dockerdf:~# docker­compose versiondocker­compose version 1.8.0, build f3628c7docker­py version: 1.9.0CPython version: 2.7.9OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

 

https://docs.docker.com/compose/install/

Page 100: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

31Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Instalação Docker Machine:

root@dockerdf:~#  curl ­L https://github.com/docker/machine/releases/download/v0.7.0/docker­machine­`uname ­s`­`uname ­m` > /usr/local/bin/docker­machine  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100   600    0   600    0     0    851      0 ­­:­­:­­ ­­:­­:­­ ­­:­­:­­   851100 34.5M  100 34.5M    0     0  1442k      0  0:00:24  0:00:24 ­­:­­:­­ 1242kroot@dockerdf:~# root@dockerdf:~# chmod +x /usr/local/bin/docker­machineroot@dockerdf:~# docker­machine versiondocker­machine version 0.7.0, build a650a40

 

Page 101: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

32Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker:

Para listar as imagens que seu Docker host tem localmente execute o comando abaixo:

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBroot@dockerdf:~# 

As imagens retornadas estão presentes no seu Docker host e não demandarão nenhum download.A não ser que você deseje atualizá­la, caso exista o que possa ser atualizado. Para atulizar a imagem basta executar o comando….

docker pull nome_da_imagemNo caso acima, ubuntu, então …

root@dockerdf:~# docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntu

Digest: sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54bStatus: Image is up to date for ubuntu:latest

 

Page 102: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

33Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker:

Inspecionar a imagem que acabou de atualizar, basta utilizar o comando… 

docker inspect nome_da_imagem

root@dockerdf:~# docker inspect ubuntu[    {        "Id": "sha256:42118e3df429f09ca581a9deb3df274601930e428e452f7e4e9f1833c56a100a",        "RepoTags": [            "ubuntu:latest"        ],        "RepoDigests": [            "ubuntu@sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54b"        ],        "Parent": "",        "Comment": "",        "Created": "2016­07­22T15:19:31.961254889Z",        "Container": "18623e507b31713ccb54bb249bd40a3a9f0acfe50ca1a6615729ea983b6a8011",        "ContainerConfig": {            "Hostname": "827f45722fd6",            "Domainname": "",            "User": "",            "AttachStdin": false,            "AttachStdout": false,            "AttachStderr": false,            "Tty": false,            "OpenStdin": false,            "StdinOnce": false,            "Env": [

 

Page 103: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

34Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker:

     "Architecture": "amd64",        "Os": "linux",        "Size": 124796948,        "VirtualSize": 124796948,        "GraphDriver": {            "Name": "aufs",            "Data": null        },        "RootFS": {            "Type": "layers",            "Layers": [                "sha256:ea9f151abb7e06353e73172dad421235611d4f6d0560ec95db26e0dc240642c1",                "sha256:0185b3091e8ee299850b096aeb9693d7132f50622d20ea18f88b6a73e9a3309c",                "sha256:98305c1a8f5e5666d42b578043e3266f19e22512daa8c6b44c480b177f0bf006",                "sha256:9a39129ae0ac2fccf7814b8e29dde5002734c1699d4e9176061d66f5b1afc95c"            ]        }    }]

 

Page 104: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

35Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker… Como?:

docker run <parâmetros> <imagem> <CMD> <argumentos>

Os parâmetros mais utilizados na execução do container são:Parâmetro | Explicação——–|———— ­d | Execução do container em background ­i | Modo interativo. Mantém o STDIN aberto mesmo sem console anexado ­t | Aloca uma pseudo TTY –rm | Automaticamente remove o continer após finalização (Não funciona com ­d) –name | Nomear o container ­v | Mapeamento de volume ­p | Mapemento de porta ­m | Limitar o uso de memória RAM ­c | Balancear o uso de CPU

 

Page 105: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

36Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Executando o Docker… Como?:

root@dockerdf:~# docker run ­it ­­rm ­­name meu_ubuntu ubuntu bashroot@0cb5acd9ff74:/# root@0cb5acd9ff74:/# exit

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBroot@dockerdf:~# 

 

Page 106: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

37Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Verificando a lista de containers:

docker ps <parâmetros>Os parâmetros mais utilizados na execução do container são:Parâmetro | Explicação———–|———— ­a | Lista todos os containers, inclusive os desligados ­l | Lista os ultimos containers, inclusive os desligados ­n | Lista os últimos N containers, inclusive os desligados ­q | Lista apenas os ids dos containers, ótimo para utilização em scripts

 

https://docs.docker.com/engine/reference/commandline/ps/

Page 107: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

38Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Verificando a lista de containers:

root@dockerdf:~# docker ps ­aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES94c1b8d15ccb        ubuntu              "cat /etc/debian_vers"   9 minutes ago       Exited (0) 9 minutes ago                           silly_chandrasekhar9546bf4f1edf        ubuntu              "cat /etc/debian­vers"   9 minutes ago       Exited (1) 9 minutes ago                           determined_bardeen88372a09c2fb        ubuntu              "cat /etc/debian"        9 minutes ago       Exited (1) 9 minutes ago                           adoring_ritchie34672e88d128        ubuntu              "cat /etc/lsb­release"   9 minutes ago       Exited (1) 9 minutes ago                           stupefied_poincare5859d61c6aec        ubuntu              "/bin/bash"              10 minutes ago      Exited (0) 10 minutes ago                          trusting_mestorff90f50fbc022        ubuntu              "bash"                   About an hour ago   Exited (0) About an hour ago                       mad_goldstinea2f4ba040c29        ubuntu              "bash"                   10 hours ago        Exited (0) 10 hours ago                            zen_torvaldsb7534167f7ef        hello­world         "/hello"                 10 hours ago        Exited (0) 10 hours ago                            awesome_thompsonroot@dockerdf:~# 

  https://docs.docker.com/engine/reference/commandline/ps/

Page 108: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

39Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Verificando a lista de containers:

root@dockerdf:~# docker ps ­lCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES94c1b8d15ccb        ubuntu              "cat /etc/debian_vers"   9 minutes ago       Exited (0) 9 minutes ago                       silly_chandrasekharroot@dockerdf:~# root@dockerdf:~# docker ps ­nflag needs an argument: 'n' in ­nSee 'docker ps ­­help'.root@dockerdf:~# docker ps ­n 3CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES94c1b8d15ccb        ubuntu              "cat /etc/debian_vers"   9 minutes ago       Exited (0) 9 minutes ago                        silly_chandrasekhar9546bf4f1edf        ubuntu              "cat /etc/debian­vers"   10 minutes ago      Exited (1) 10 minutes ago                       determined_bardeen88372a09c2fb        ubuntu              "cat /etc/debian"        10 minutes ago      Exited (1) 10 minutes ago                       adoring_ritchieroot@dockerdf:~# 

  https://docs.docker.com/engine/reference/commandline/ps/

Page 109: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

40Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Gerenciamento de containers:

Caso deseje desligar o container basta utilizar o comando docker stop nome_do_container

Ele recebe como argumento o ID ou nome do container. Ambos dados podem ser obtidos com o docker ps

Caso deseje ligar o container basta utilizar o comando docker start nome_do_container

Vale ressaltar que a ideia dos containers é serem descartáveis, ou seja, caso você esteja usando o mesmo container por muito tempo sem descartá­lo, você provavelmente estará usando o Docker incorretamente. O Docker 

não é uma máquina, é um processo em execução e como todo processo ele deve ser descartado para que outro possa tomar seu lugar na reinicialização do mesmo.

Page 110: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

41Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Criando sua própria imagem:

imagem é a classe e o container o objeto, ou seja, a imagem é a abstração da infraestrutura em um estado somente leitura, que é de onde será instanciado o container.Todo container é iniciado a partir de uma imagem, dessa forma podemos concluir que nunca teremos uma imagem em execução.Um container só pode ser iniciado a partir de uma única imagem, ou seja, caso deseje umcomportamento diferente será necessário customizar a imagem.

As imagens oficiais da docker são aquelas que não tem usuário em seu nome, ou seja, a imagem “ubuntu:16.04  é ′′oficial, por outro lado a imagem “nuagebec/ubuntu” não é oficial. Essa segunda imagem é mantida pelo usuário nuagebec, que mantém muitas outras imagens não oficiais.

As imagens oficiais são mantidas pela empresa docker e são disponibilizadas na nuvem docker.

Nome da imagemO nome de uma imagem oficial é composta de duas partes. A primeira é o que a documentação chama de “repositório” e a segunda é a “tag”. No caso da imagem “ubuntu:14.04”, ubuntu é o repositório e 14.04 é a tag.

Page 111: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

42Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Criando sua própria imagem:

Para visualizar todas as imagens que se encontram localmente na sua estação nesse momento:

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kB

Há duas formas de criar imagens customizadas: Com commit e com Dockerfile.

Page 112: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

43Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Criando imagens com commit

É possível criar imagens executando o comando commit relacionado a um container, ou seja, esse comando obtera o status atual do container escolhido e criará uma imagem a partir dessa informação.

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBroot@dockerdf:~# docker run ­it ­­name ubunudf ubuntu bashroot@334aa1d388e8:/# 

Instalar o nginx nele

root@334aa1d388e8:/# apt­get update &&  apt­get install nginx ­y && exit

Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]Get:2 http://archive.ubuntu.com/ubuntu xenial­updates InRelease [95.7 kB]Get:3 http://archive.ubuntu.com/ubuntu xenial­security InRelease [94.5 kB]Get:4 http://archive.ubuntu.com/ubuntu xenial/main Sources [1103 kB]Get:5 http://archive.ubuntu.com/ubuntu xenial/restricted Sources [5179 B]                                                                                                      Get:6 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB]    . . .                                      

Page 113: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

44Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Criando imagens com commit

Setting up nginx­common (1.10.0­0ubuntu0.16.04.2) ...Setting up nginx­core (1.10.0­0ubuntu0.16.04.2) ...invoke­rc.d: could not determine current runlevelinvoke­rc.d: policy­rc.d denied execution of start.Setting up nginx (1.10.0­0ubuntu0.16.04.2) ...Processing triggers for libc­bin (2.23­0ubuntu3) ...Processing triggers for sgml­base (1.26+nmu4ubuntu1) ...Processing triggers for systemd (229­4ubuntu6) ...exitroot@dockerdf:~# Saiu do Container

root@dockerdf:~# docker stop ubunudfubunudfroot@dockerdf:~# docker commit ubunudf ubuntudf:nginx  Container_criado imagem_criada sha256:6768ec58b858b02e01c6ed894edead23987cb3043e863621112b697fc3405bebroot@dockerdf:~# 

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED              SIZEubuntudf            nginx               6768ec58b858        About a minute ago   220.4 MBubuntu              latest              42118e3df429        2 weeks ago          124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago          1.848 kBroot@dockerdf:~# 

Page 114: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

45Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E se deu certo  . . . 

root@dockerdf:~# docker run ­it ­­rm ubuntudf:nginx dpkg ­l nginx Executou o comando dentro do containerDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf­files/Unpacked/halF­conf/Half­inst/trig­aWait/Trig­pend|/ Err?=(none)/Reinst­required (Status,Err: uppercase=bad)||/ Name           Version      Architecture Description+++­==============­============­============­=================================ii  nginx          1.10.0­0ubun all          small, powerful, scalable web/proroot@dockerdf:~# 

Nota:O método commit não é a melhor opção para criar imagens, pois como pudemos verificar, o processo de 

modificação da imagem é completamente manual e apresenta certa dificuldade para rastrear as mudanças que foram efetuadas, uma vez que o que foi modificado manualmente não é registrado automaticamente na 

estrutura do docker.

Page 115: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

46Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente . . . 

Dockerfile na verdade representa a exata diferença entre uma determinada imagem, que aqui chamamos de base, e a imagem que se deseja criar.

Page 116: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

47Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente . . . 

root@dockerdf:~# touch teste_metuproot@dockerdf:~# vi Dockerfileroot@dockerdf:~# more Dockerfile FROM ubuntuRUN apt­get update && apt­get install nginx ­yCOPY teste_metup /tmp/teste_metupCMD bashroot@dockerdf:~#

FROM é usado para informar qual imagem será utilizada.RUN é usado para informar quais comandos serão executados nesse ambiente para efetuar asmudanças necessárias na infraestrutura do sistema.COPY é usado para copiar arquivos da estação para a imagem. Mas pode ser utilizada para enviar arquivos de configuração de ambiente e códigos para serem executados em serviços de aplicação.CMD é usado informar qual comando será executado por padrão.

Agora, construir:

root@dockerdf:~# docker build ­t ubuntunovo:web_auto .  ­t nome_imagem:tag Observe o . ao fonal da linha para informar que tudo do diretório atual será utilizadoSending build context to Docker daemon 9.728 kBStep 1 : FROM ubuntu ­­­> 42118e3df429Step 2 : RUN apt­get update && apt­get install nginx ­y ­­­> Running in 3e6c3cfcd9d9Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]

Page 117: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

48Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente . . . 

Step 3 : COPY teste_metup /tmp/teste_metup ­­­> 079c2612224eRemoving intermediate container 894932c50f21Step 4 : CMD bash ­­­> Running in 7dfcbb3ecf95 ­­­> d9ce37133936Removing intermediate container 7dfcbb3ecf95Successfully built d9ce37133936   ­  Build criadaroot@dockerdf:~# root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntunovo          web_auto            d9ce37133936        13 minutes ago      220.4 MBubuntudf            nginx               6768ec58b858        35 minutes ago      220.4 MBubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBroot@dockerdf:~# root@dockerdf:~# docker run ­it ­­rm ubuntunovo:web_auto ls ­l /tmptotal 0­rw­r­­r­­ 1 root root 0 Aug  6 08:07 teste_metup

Page 118: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

49Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente de novo . . . 

O resultado de cada instrução do Dockerfile é armazenado em um cache local, ou seja, caso não seja modificado na próxima criação da imagem (build) tudo estará no cache, mas caso algo seja modificado apenas a instrução modificada e as posteriores serão executadas novamente.

root@dockerdf:~# more Dockerfile FROM ubuntuRUN apt­get update && apt­get install nginx ­yRUN apt­get install php7.0 ­yCOPY teste_metup /tmp/teste_metupCMD bashroot@dockerdf:~# 

Page 119: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

50Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Então vamos fazer outra igual, mas diferente de novo . . . 

root@dockerdf:~# docker build ­t ubuntunovo:web_auto .Sending build context to Docker daemon 11.78 kBStep 1 : FROM ubuntu ­­­> 42118e3df429Step 2 : RUN apt­get update && apt­get install nginx ­y ­­­> Using cache ­­­> 8b4bb9bc5548Step 3 : RUN apt­get install php7.0 ­y ­­­> Running in c194608952b2Reading package lists...Building dependency tree...Reading state information...The following additional packages will be installed:  file libbsd0 libedit2 libmagic1 mime­support php­common php7.0­cli  php7.0­common php7.0­fpm php7.0­json php7.0­opcache php7.0­readline psmiscSuggested packages:  php­pearThe following NEW packages will be installed:  file libbsd0 libedit2 libmagic1 mime­support php­common php7.0 php7.0­cli  php7.0­common php7.0­fpm php7.0­json php7.0­opcache php7.0­readline psmisc0 upgraded, 14 newly installed, 0 to remove and 5 not upgraded.Need to get 3939 kB of archives.After this operation, 19.0 MB of additional disk space will be used.Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmagic1 amd64 1:5.25­2ubuntu1 [216 kB]

Page 120: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

51Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E aonde se guarda todas essas alterações? 

Page 121: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

52Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

A rede na verdade é uma abstração criada para facilitar o gerenciamento da comunicação de dados entre containers e os nós externos ao ambiente docker

O docker é disponibilizado com três redes por padrão. Essas redes oferecem configurações específicaspara gerenciamento do tráfego de dados.

root@dockerdf:~# docker network lsNETWORK ID          NAME                DRIVER              SCOPE1d14f4906e3c        bridge              bridge              local               de3ae5b6d137        host                host                local               baea6f843214        none                null                local 

Como exemplo de utilização de uma rede criada por usuário, primeiro vamos criar a rede chamadaisolada_nw com o driver bridge

root@dockerdf:~# docker network create ­­driver bridge isolada_nw330dbf27cef157cba21c373e782253931314b5643a2365b93219ba6614363597root@dockerdf:~# docker network lsNETWORK ID          NAME                DRIVER              SCOPE1d14f4906e3c        bridge              bridge              local               de3ae5b6d137        host                host                local               330dbf27cef1        isolada_nw          bridge              local               baea6f843214        none                null                local               root@dockerdf:~# 

Page 122: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

53Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

root@dockerdf:~# docker run ­d ­­name bd ­e MYSQL_ROOT_PASSWORD=minhasenha mysqlUnable to find image 'mysql:latest' locallylatest: Pulling from library/mysql357ea8c3d80b: Pull complete 256a92f57ae8: Pull complete d5ee0325fe91: Pull complete a15deb03758b: Pull complete 7b8a8ccc8d50: Pull complete 1a40eeae36e9: Pull complete 833539b56478: Pull complete 4f350efbb7e5: Pull complete 266f161e49c6: Pull complete 2d0f7f51c888: Pull complete 13b44531c4a7: Pull complete Digest: sha256:e6dc999f4e2d5982e74a008ff08c0641f0832e19339aaf4f4c2bc2ca426e96c6Status: Downloaded newer image for mysql:latest5b08c3672ecc852f9fa5759985ba5822a645e25052abe55ddce1bd353e63f022root@dockerdf:~# 

Page 123: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

54Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

root@dockerdf:~# docker run ­d ­p 80:80 ­­name app ­­link bd tutum/apache­phpUnable to find image 'tutum/apache­php:latest' locallylatest: Pulling from tutum/apache­php

6ffe5d2d6a97: Pull complete f4e00f994fd4: Pull complete e99f3d1fc87b: Pull complete a3ed95caeb02: Pull complete c10ab9e629d8: Pull complete 5c65b067601c: Pull complete 2cbc3ddde9c1: Pull complete 9a5e857e989f: Pull complete 7bd95ceec22a: Pull complete c27094051f1e: Pull complete d820ec68d287: Pull complete Digest: sha256:6d21118f57fd5415638b0744be140c16e40353e2bc06659c8c8ffeadae648cfcStatus: Downloaded newer image for tutum/apache­php:latestroot@dockerdf:~# 

Page 124: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

55Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

root@dockerdf:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE<none>              <none>              8781fc8964a1        39 minutes ago      240.7 MBubuntunovo          web_auto            d9ce37133936        About an hour ago   220.4 MBubuntudf            nginx               6768ec58b858        About an hour ago   220.4 MBmysql               latest              43c70d2fa278        4 days ago          384.5 MBubuntu              latest              42118e3df429        2 weeks ago         124.8 MBhello­world         latest              c54a2cc56cbb        5 weeks ago         1.848 kBalpine              latest              4e38e38c8ce0        6 weeks ago         4.799 MBtutum/apache­php    latest              2e233ad9329b        13 months ago       244.7 MBroot@dockerdf:~# 

root@dockerdf:~# docker exec ­it app ping bdPING bd (172.17.0.2) 56(84) bytes of data.64 bytes from bd (172.17.0.2): icmp_seq=1 ttl=64 time=0.165 ms64 bytes from bd (172.17.0.2): icmp_seq=2 ttl=64 time=0.174 ms64 bytes from bd (172.17.0.2): icmp_seq=3 ttl=64 time=0.136 ms^C­­­ bd ping statistics ­­­3 packets transmitted, 3 received, 0% packet loss, time 2001msrtt min/avg/max/mdev = 0.136/0.158/0.174/0.019 msroot@dockerdf:~# 

Page 125: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

56Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

Iniciar um container na rede, chamada isolada_nw,

root@dockerdf:~# docker run ­itd ­­net isolada_nw alpine shUnable to find image 'alpine:latest' locallylatest: Pulling from library/alpine

e110a4a17941: Pull complete Digest: sha256:3dcdb92d7432d56604d4545cbd324b14e647b313626d99b889d0626de158f73aStatus: Downloaded newer image for alpine:latest3e9c00abf1e4b63c238dd31661bc33436a2035bb1a6d64776878435c5d3ed526root@dockerdf:~# 

https://hub.docker.com/_/alpine/Linux Alpine com 5MB

Page 126: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

57Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

root@dockerdf:~# docker network inspect isolada_nw[    {        "Name": "isolada_nw",        "Id": "330dbf27cef157cba21c373e782253931314b5643a2365b93219ba6614363597",        "Scope": "local",        "Driver": "bridge",        "EnableIPv6": false,        "IPAM": {            "Driver": "default",            "Options": {},            "Config": [                {                    "Subnet": "172.18.0.0/16",                    "Gateway": "172.18.0.1"                }            ]        },        "Internal": false,        "Containers": {},        "Options": {},        "Labels": {}    }]

Page 127: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

58Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . E como acessar os containers?

Overlay permite comunicação entre hosts docker, ou seja, com sua utilização os containers de um determinado host docker poderão acessar nativamente containers de um outro ambiente docker.

Page 128: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

59Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Cansei, relaxar . . . 

root@dockerdf:~# mkdir relaxarroot@dockerdf:~# cd relaxarroot@dockerdf:~/relaxar# vi Dockerfileroot@dockerdf:~/relaxar# more Dockerfile FROM ubuntuMAINTAINER DockerDF <[email protected]>RUN ["apt­get", "update"]RUN ["apt­get", "install", "­y", "frozen­bubble"]RUN ["useradd", "player", "­u", "1000", "­g", "100", "­m", "­d", "/home/player", "­s", "/bin/bash"]USER player# ENTRYPOINT define o comando que executará quando o contêiner# for executado a partir da imagem.ENTRYPOINT ["/usr/games/frozen­bubble"] ­­­> Running in 9b541ce680b9 ­­­> 615b31d902d3Removing intermediate container 9b541ce680b9Step 7 : ENTRYPOINT /usr/games/frozen­bubble ­­­> Running in c80cb93f136d ­­­> ece9fc943718Removing intermediate container c80cb93f136dSuccessfully built ece9fc943718

Page 129: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

60Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . . Cansei, relaxar . . . 

root@dockerdf:~/relaxar# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZErelaxar             game                ece9fc943718        4 minutes ago       312.1 MB

root@dockerdf:~/relaxar# docker run ­ti ­­rm ­e "DISPLAY=unix:0" ­v /tmp/.X11­unix:/tmp/.X11­unix ­v $HOME/Pictures:/home/player relaxar:game

Page 130: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

61Meetup Mão na massa – DOCKER - DF

Nadando de braçada . . .

Page 131: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

62Meetup Mão na massa – DOCKER - DF

● E agora ? ? ?

Chegamos .. . e ai ?

http://www.meetup.com/pt-BR/Docker-Meetup/

Page 132: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

63Meetup Mão na massa – DOCKER - DF

● E agora ? ? ?

Chegamos .. . e ai ?

https://www.facebook.com/dockerdf/

Page 133: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

64Meetup Mão na massa – DOCKER - DF

● E agora ? ? ?

Chegamos .. . e ai ?

https://dockerdf.slack.com

Page 134: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

65Meetup Mão na massa – DOCKER - DF

● E agora ? ? ?

Chegamos .. . e ai ?

Page 135: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

66Meetup Mão na massa – DOCKER - DF

Chegamos .. . e ai ?

Page 136: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

67Meetup Mão na massa – DOCKER - DF

● ReferênciasPalestra de Solomon Hykes - https://youtu.be/wW9CAH9nSLs

Site oficial - https://www.docker.com/

Livro do Gomex - https://leanpub.com/dockerparadesenvolvedores

Site do Gomex - http://techfree.com.br/

Treinamento do Docker - https://training.docker.com/

Mundo Docker - http://www.mundodocker.com.br/o-que-e-docker/

Devops Brasil - http://devops-br.org/

Primeiro Passo - http://www.diego-garcia.info/2015/02/15/docker-por-onde-comecar/

Segundo passo - http://blog.concretesolutions.com.br/2015/07/como-dockerizar-aplicacao-linux/

Nadando . . .

Page 137: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

68Meetup Mão na massa – DOCKER - DF

● ReferênciasTelegram - https://telegram.me/dockerbr

Luiz Carlos Faria - http://luizcarlosfaria.net/docker/

Devops e Infra Ágil - http://gutocarvalho.net/octopress/2013/03/16/o-que-e-um-devops-afinal/

DevopsDay – Porto Alegre - https://goo.gl/asyvdP

LinuxTips - https://goo.gl/htkaLM

Nadando . . .

Page 138: Docker – Mão na massafiles.meetup.com/18269148/meetup2_mao_na_massa.pdf · 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado,

69Meetup Mão na massa – DOCKER - DF

FIM