SlideShare uma empresa Scribd logo
Oficina de
introdução ao Docker
“Um dos mais interessantes e poderosos
projetos open-source a ganhar vida nos
últimos anos. Docker pode ajudá-lo em
tantas coisas que é injusto tentar resumir
as suas capacidades em uma frase.
(Artigo Digital Ocean)
Quem vos Fala!
Morvana Bonin
Desenvolvedora de Software na KingHost há mais de
4 anos, estudante de Análise e Desenvolvimento de
Sistemas na Faculdade Senac, participante de vários
projetos e curiosa por natureza.
O que vamos ver
● O que é Docker
● Arquitetura
● Instalação
● Containers / Contêineres
● Imagens
● Dockerfile
● Compose
1.
O que é docker
Entrando no mundo da containerização
Um de pouco de conceito
Containerização
Em 26 de Abril de 1956, acontecia o primeiro embarque
de contêineres em navios, um navio carregando 58
contêineres deixou Newark, partindo para Houston.
A emergência do transporte de carga containerizada foi
um facilitador crucial para o desenvolvimento do
comércio mundial. Contêineres tornaram-se uma rápida,
confiável e econômica maneira de se transportar
produtos diversos.
Malcolm P. McLean é conhecido como o “Pai da
Containerização”.
Containerização e Docker
O primeiro anúncio de Docker foi em uma conferência de
Python em 2013 por Solomon Hykes, CEO na época da
dotCloud.
Docker foi criado, inicialmente, para que a gerência do
PaaS (Platform as a Service) pudesse ser de forma mais
simples, a ideia é que em vez de máquinas virtuais por
debaixo dos panos, tudo rodaria em contêineres Linux.
Para a parte de containerização, inicialmente,
Docker utilizava a antiga tecnologia LXC (Linux
Containers) que existe em toda distribuição Linux
desde 2008.
A partir da versão 1 o Docker substituiu o LXC
pela libcontainer e a partir de junho de 2015
passou a utilizar o runC (Runtime Container),
evolução da libcontainer, doada posteriormente
ao OCI (Open Container Iniciative).
BUILD, SHIP, RUN
Docker é uma plataforma
open source usada para
construir, executar e
distribuir ambientes
Que é uma forma de empacotamento/
conteinerização de infraestrutura
portável e simples, na qual constitui
facilmente várias "máquinas"
executando no mesmo kernel, porém
isoladas logicamente, usando as
tecnologias runC.
Tudo isso é possível por conta da Docker Engine...
Fonte: Marcelo Cavalcante Rocha <http://migre.me/uW6EH>
2.
arquitetura docker
Como funciona por debaixo dos “panos”
docker daemon
usado para
gerenciar os
containers docker
no host onde ele
roda
PARTES PRINCIPAIS DOCKER
docker CLI
usado para
comandar e se
comunicar com o
docker daemon
docker registry
um repositório
(público ou
privado) para as
imagens do
docker
Fonte:WellingtonF.Silva<http://migre.me/uW6Kn>
Fonte:WellingtonF.Silva<http://migre.me/uW6Kn>
docker images
imagens
instantâneas dos
contêineres ou do
S.O. básico
(Ubuntu por
exemplo)
ELEMENTOS PRINCIPAIS DOCKER
docker container
diretórios
contendo tudo
que constitui sua
aplicação.
Dockerfiles
scripts que
automatizam o
processo de
construção de
imagens
DOCKER IMAGE
é uma especificação do
que o container vai
possuir quando for
executado.
DOCKER CONTAINER
Depende de uma imagem
Geram novas imagens
Conectividade com o host e outros containers
Execução controlada - CPU,RAM,I/O,etc
Descartáveis ou persistentes
3.
instalação docker
Configuração do ambiente onde o docker irá rodar
INSTALAÇÃO NO WINDOWS E MAC OS
2 formas de instalação
Docker for Windows
Docker for Mac
ou
Docker Toolbox
INSTALAÇÃO NO LINUX
Apenas uma forma,
simples e funciona!
Na instalação no linux, você pode criar um
grupo chamado docker e adicionar seu
usuário, isso faz com que você tenha acesso e
não precise ficar pedindo permissão com o
sudo.
$ sudo groupadd docker
$ sudo usermod -aG docker $(whoami)
$ docker info
4.
comandos docker
Trabalhando na parte CLI
Em um terminal
vamos executar:
docker version ou
docker -v
para ver a versão do
docker
instalada.
docker ps
para ver os containers que estão rodando.
docker ps -a
Para ver todos os containers.
Vamos rodar o comando
docker run hello-world
para criar um container a
partir da imagem
hello-world.
docker info
retorna uma lista de todos os containers, imagens,
versão do docker, o drive do storage, entre outras
informações.
docker start id do container ou nome do container
inicia um container
docker stop id do container ou nome do container
para um container
docker rm id do container ou nome do container
remove um container
docker build
docker commit
docker create
docker exec
docker history
docker logs
docker images
docker network
docker pull
docker restart
docker rmi
docker rename
docker search
Para ver todos os comandos que o docker possuí,
utilize o docker help
$ docker help
A maioria dos comandos também possuem
parâmetros, e para vê-los você pode utilizar o
comando
$ docker run --help
DOCKER RUN
O comando docker run é o comando principal do
docker para criar containers a partir de imagens.
Há duas formas de executar o comando docker run,
em primeiro plano (foreground) e em segundo plano,
ou como alguns chamam, desanexado (detached).
Entre as várias opções, parâmetros que o run aceita,
temos dois que iremos utilizar bastante,
principalmente para testes.
-i ou --interactive - mantém o STDIN aberto,
possibilitando ver os outputs que estão acontecendo
dentro do container.
-t ou -tty - aloca de pseudo terminal TTY para
processo rodando no container.
É bem comum as opções -i e -t virem juntas.
Outras opções, parâmetros:
--rm - remove o container quando ele finaliza a execução.
--name - atribui de nome a de container.
--net - define o tipo de rede que será usada no container.
-m ou --memory - define o máximo de memória alocada para o
container.
-e ou --env - define variáveis de ambiente e valores dentro do
container.
-h ou --hostname - define um host especifico para o container.
-u ou user - define de usuário para o container.
-w ou --workdir - define em qual diretório do container serão
executados os scripts; por padrão é o /.
DOCKER VOLUME
-v ou --volume é a opção/ parâmetro ao qual é
possível compartilhar de volume entre o docker host
e o container.
O parâmetro --volumes-from permite montar
volumes de outros containers.
Não é recomendado o uso do comando docker
commit, é recomendado a construção de
imagens usando o arquivo Dockerfile e o
comando docker build.
5.
dockerfile
A receita para a criação de imagens
Dockerfile é um arquivo que contém um
conjunto de instruções necessárias para se
criar uma imagem Docker
COMANDOS DOCKERFILE
ADD
CMD
ENTRYPOINT
ENV
EXPOSE
FROM
MAINTAINER
RUN
USER
COPY
VOLUME
WORKDIR
CMD - define de comando a ser execu
tado quando de container é criado. Pode ser sobrescrito.
ENTRYPOINT - parecido com o CMD, a diferença do comando
Entrypoint é que ele não será sobrescrito.
WORKDIR - seta o diretório a ser trabalhado quando o
container for instanciado.
ENV - a instrução ENV serve para setar variáveis durante o
processo de construção da imagem.
USER - essa instrução serve para setar de usuário específico
que a imagem deve rodar
VOLUME - adiciona de volume para qualquer container criado a
partir da imagem.
ADD - adiciona arquivos ou diretórios dentro da nossa imagem.
RUN - Essa instrução é responsável por executar comandos no
shell.
EXPOSE - serve para exportar as portas do container para o
host.
LABEL - define label para agregar mais informações para o
container.
6.
docker compose
Orquestrando seus containers
é uma ferramenta
para a criação e
execução de
múltiplos containers
de aplicação.
Com o Compose, você irá utilizar um
único arquivo do tipo yaml para definir
como será o ambiente de sua aplicação
e usando um único comando você
criará e iniciará todos os serviços
definidos.
build
config
create
down
events
exec
help
kill
logs
pause
port
ps
pull
restart
rm
run
scale
start
stop
unpause
up
version
docker-compose
7.
referências e dicas
Documentação, livros, dicas
REFERÊNCIAS
Docker for mac <https://docs.docker.com/docker-for-mac>
Docker for windows <https://docs.docker.com/docker-for-windows>
Docker Toolbox <https://www.docker.com/products/docker-toolbox>
Docker fo Linux
<https://docs.docker.com/engine/getstarted/linux_install_help>
DOCKER PARA DESENVOLVEDORES
Livro sendo escrito por
Rafael Gomes (@Gomex), é
um livro no estilo pague o
quanto quiser, ou mesmo
nada. Se encontra no
LeanPub.
APRENDENDO DOCKER
Livro escrito por
Wellington Figueira da
Silva, referência em
Docker, publicado pela
editora Novatec.
CONTAINERS COM DOCKER
Livro escrito por Daniel
Romero, publicado pela
Casa do Código.
THE DOCKER BOOK
Livro escrito por James
Turnbull e vendido pela
Amazon.
DICAS
Documentação Docker [En]
<https://docs.docker.com/>
Awesome Docker
<https://github.com/veggiemonk/awesome-docker>
Lista do Telegram <https://telegram.me/dockerbr>
Obrigada!

Mais conteúdo relacionado

Mais procurados

virtualization-vs-containerization-paas
virtualization-vs-containerization-paasvirtualization-vs-containerization-paas
virtualization-vs-containerization-paas
rajdeep
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
Yen-Chin Lee
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
Emertxe Information Technologies Pvt Ltd
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Kohei Tokunaga
 
Kubernetes
KubernetesKubernetes
Kubernetes
erialc_w
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
Akihiro Suda
 
The Kubernetes Operator Pattern - ContainerConf Nov 2017
The Kubernetes Operator Pattern - ContainerConf Nov 2017The Kubernetes Operator Pattern - ContainerConf Nov 2017
The Kubernetes Operator Pattern - ContainerConf Nov 2017
Jakob Karalus
 
eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動
Kohei Tokunaga
 
Final terraform
Final terraformFinal terraform
Final terraform
Gourav Varma
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
Sreenivas Makam
 
Using ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixivUsing ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixiv
Shunsuke Michii
 
Effective terraform
Effective terraformEffective terraform
Effective terraform
Calvin French-Owen
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
DAEBUM LEE
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用
Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用
Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用
Motonori Shindo
 
Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Sunnyvale
 
Building Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchBuilding Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 Arch
Sherif Mousa
 
Linux Namespace
Linux NamespaceLinux Namespace
Linux Namespace
Masami Ichikawa
 
DevOps Best Practices
DevOps Best PracticesDevOps Best Practices
DevOps Best Practices
Giragadurai Vallirajan
 

Mais procurados (20)

virtualization-vs-containerization-paas
virtualization-vs-containerization-paasvirtualization-vs-containerization-paas
virtualization-vs-containerization-paas
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
 
The Kubernetes Operator Pattern - ContainerConf Nov 2017
The Kubernetes Operator Pattern - ContainerConf Nov 2017The Kubernetes Operator Pattern - ContainerConf Nov 2017
The Kubernetes Operator Pattern - ContainerConf Nov 2017
 
eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動
 
Final terraform
Final terraformFinal terraform
Final terraform
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
 
Using ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixivUsing ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixiv
 
Effective terraform
Effective terraformEffective terraform
Effective terraform
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用
Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用
Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用
 
Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
Building Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchBuilding Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 Arch
 
Linux Namespace
Linux NamespaceLinux Namespace
Linux Namespace
 
DevOps Best Practices
DevOps Best PracticesDevOps Best Practices
DevOps Best Practices
 

Destaque

Administração do tempo
Administração do tempoAdministração do tempo
Administração do tempo
Derson Lopes Jr, Msc, PMP
 
Motivacao
MotivacaoMotivacao
Motivacao
taniamaciel
 
Produtividade
ProdutividadeProdutividade
Produtividade
Elcio Ferreira
 
Resiliência
ResiliênciaResiliência
Resiliência
adilsonmatheus
 
Meditação e Concentração
Meditação e ConcentraçãoMeditação e Concentração
Meditação e Concentração
paikachambi
 
Treinamento de Administracao do Tempo
Treinamento de Administracao do TempoTreinamento de Administracao do Tempo
Treinamento de Administracao do Tempo
George Dias
 
Oficina Apresentação Pessoal - Ana Maria
Oficina Apresentação Pessoal - Ana MariaOficina Apresentação Pessoal - Ana Maria
Oficina Apresentação Pessoal - Ana Maria
RASC EAD
 
Resiliência
ResiliênciaResiliência
Resiliência
Mary Kay do Brasil
 
Administração do Tempo - Treinamento Embali
Administração do Tempo - Treinamento EmbaliAdministração do Tempo - Treinamento Embali
Administração do Tempo - Treinamento Embali
Milton Henrique do Couto Neto
 
APRESENTAÇÃO PESSOAL E PROFISSIONAL
APRESENTAÇÃO PESSOAL E PROFISSIONALAPRESENTAÇÃO PESSOAL E PROFISSIONAL
APRESENTAÇÃO PESSOAL E PROFISSIONAL
Susana Pelota
 
Relacionamento Interpessoal no Ambiente de Trabalho
Relacionamento Interpessoal no Ambiente de TrabalhoRelacionamento Interpessoal no Ambiente de Trabalho
Relacionamento Interpessoal no Ambiente de Trabalho
Luis Paulo Barros
 
Aula 15 administração do tempo
Aula 15   administração do tempoAula 15   administração do tempo
Aula 15 administração do tempo
Luiz Siles
 
Administração de tempo
Administração de tempoAdministração de tempo
Administração de tempo
Ernandes Rodrigues Do Nascimento
 
Gestão do Tempo e Produtividade - Conceitos e Ferramentas
Gestão do Tempo e Produtividade - Conceitos e FerramentasGestão do Tempo e Produtividade - Conceitos e Ferramentas
Gestão do Tempo e Produtividade - Conceitos e Ferramentas
Davi Rocha
 
ApresentaçãO Pessoal
ApresentaçãO PessoalApresentaçãO Pessoal
ApresentaçãO Pessoal
vinij1
 
10 dinâmicas divertidas e envolventes
10 dinâmicas divertidas e envolventes10 dinâmicas divertidas e envolventes
10 dinâmicas divertidas e envolventes
Seduc MT
 

Destaque (16)

Administração do tempo
Administração do tempoAdministração do tempo
Administração do tempo
 
Motivacao
MotivacaoMotivacao
Motivacao
 
Produtividade
ProdutividadeProdutividade
Produtividade
 
Resiliência
ResiliênciaResiliência
Resiliência
 
Meditação e Concentração
Meditação e ConcentraçãoMeditação e Concentração
Meditação e Concentração
 
Treinamento de Administracao do Tempo
Treinamento de Administracao do TempoTreinamento de Administracao do Tempo
Treinamento de Administracao do Tempo
 
Oficina Apresentação Pessoal - Ana Maria
Oficina Apresentação Pessoal - Ana MariaOficina Apresentação Pessoal - Ana Maria
Oficina Apresentação Pessoal - Ana Maria
 
Resiliência
ResiliênciaResiliência
Resiliência
 
Administração do Tempo - Treinamento Embali
Administração do Tempo - Treinamento EmbaliAdministração do Tempo - Treinamento Embali
Administração do Tempo - Treinamento Embali
 
APRESENTAÇÃO PESSOAL E PROFISSIONAL
APRESENTAÇÃO PESSOAL E PROFISSIONALAPRESENTAÇÃO PESSOAL E PROFISSIONAL
APRESENTAÇÃO PESSOAL E PROFISSIONAL
 
Relacionamento Interpessoal no Ambiente de Trabalho
Relacionamento Interpessoal no Ambiente de TrabalhoRelacionamento Interpessoal no Ambiente de Trabalho
Relacionamento Interpessoal no Ambiente de Trabalho
 
Aula 15 administração do tempo
Aula 15   administração do tempoAula 15   administração do tempo
Aula 15 administração do tempo
 
Administração de tempo
Administração de tempoAdministração de tempo
Administração de tempo
 
Gestão do Tempo e Produtividade - Conceitos e Ferramentas
Gestão do Tempo e Produtividade - Conceitos e FerramentasGestão do Tempo e Produtividade - Conceitos e Ferramentas
Gestão do Tempo e Produtividade - Conceitos e Ferramentas
 
ApresentaçãO Pessoal
ApresentaçãO PessoalApresentaçãO Pessoal
ApresentaçãO Pessoal
 
10 dinâmicas divertidas e envolventes
10 dinâmicas divertidas e envolventes10 dinâmicas divertidas e envolventes
10 dinâmicas divertidas e envolventes
 

Semelhante a Oficina docker

Docker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarDocker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistar
Vinícius Feitosa
 
Docker
DockerDocker
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
Benicio Ávila
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
Cesar Augusto Nogueira
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
Cesar Augusto Nogueira
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
Renato Lucena
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
Eustaquio Guimaraes mendesbsb
 
Olá docker
Olá dockerOlá docker
Olá docker
Marcos Ellys
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
dadalt1
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop docker
Rafael Gomes
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
TechCobli
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
Rodrigo Emereciano
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
Mauricio Martins
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
Matheus Fidelis
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
Matheus Fidelis
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
Tobias Sette
 
JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorld
Thiago Soares
 
Docker
DockerDocker
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
Bruno Ricardo Siqueira
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
Wallison Marra
 

Semelhante a Oficina docker (20)

Docker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarDocker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistar
 
Docker
DockerDocker
Docker
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop docker
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorld
 
Docker
DockerDocker
Docker
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 

Mais de Morvana Bonin

Arquitetura hexagonal
Arquitetura hexagonalArquitetura hexagonal
Arquitetura hexagonal
Morvana Bonin
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introdução
Morvana Bonin
 
Sistemas de Recomendação com Neo4j + Surprise
Sistemas de Recomendação com Neo4j + SurpriseSistemas de Recomendação com Neo4j + Surprise
Sistemas de Recomendação com Neo4j + Surprise
Morvana Bonin
 
Talk conexao
Talk conexaoTalk conexao
Talk conexao
Morvana Bonin
 
Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine Learning
Morvana Bonin
 
Práticas Jedi eXtreme Programming
Práticas Jedi eXtreme ProgrammingPráticas Jedi eXtreme Programming
Práticas Jedi eXtreme Programming
Morvana Bonin
 
A tríade do tempo
A tríade do tempoA tríade do tempo
A tríade do tempo
Morvana Bonin
 
Css cascading style sheet
Css cascading style sheetCss cascading style sheet
Css cascading style sheet
Morvana Bonin
 
Html
HtmlHtml
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
Morvana Bonin
 

Mais de Morvana Bonin (10)

Arquitetura hexagonal
Arquitetura hexagonalArquitetura hexagonal
Arquitetura hexagonal
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introdução
 
Sistemas de Recomendação com Neo4j + Surprise
Sistemas de Recomendação com Neo4j + SurpriseSistemas de Recomendação com Neo4j + Surprise
Sistemas de Recomendação com Neo4j + Surprise
 
Talk conexao
Talk conexaoTalk conexao
Talk conexao
 
Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine Learning
 
Práticas Jedi eXtreme Programming
Práticas Jedi eXtreme ProgrammingPráticas Jedi eXtreme Programming
Práticas Jedi eXtreme Programming
 
A tríade do tempo
A tríade do tempoA tríade do tempo
A tríade do tempo
 
Css cascading style sheet
Css cascading style sheetCss cascading style sheet
Css cascading style sheet
 
Html
HtmlHtml
Html
 
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
 

Último

Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Annelise Gripp
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
Rafael Santos
 
Orientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço BrasilOrientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço Brasil
EliakimArajo2
 
PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
anpproferick
 
Por que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdfPor que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdf
Ian Oliveira
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
tnrlucas
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
anpproferick
 

Último (7)

Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
 
Orientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço BrasilOrientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço Brasil
 
PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
 
Por que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdfPor que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdf
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
 

Oficina docker

  • 2. “Um dos mais interessantes e poderosos projetos open-source a ganhar vida nos últimos anos. Docker pode ajudá-lo em tantas coisas que é injusto tentar resumir as suas capacidades em uma frase. (Artigo Digital Ocean)
  • 3. Quem vos Fala! Morvana Bonin Desenvolvedora de Software na KingHost há mais de 4 anos, estudante de Análise e Desenvolvimento de Sistemas na Faculdade Senac, participante de vários projetos e curiosa por natureza.
  • 4. O que vamos ver ● O que é Docker ● Arquitetura ● Instalação ● Containers / Contêineres ● Imagens ● Dockerfile ● Compose
  • 5. 1. O que é docker Entrando no mundo da containerização
  • 6.
  • 7.
  • 8. Um de pouco de conceito Containerização
  • 9. Em 26 de Abril de 1956, acontecia o primeiro embarque de contêineres em navios, um navio carregando 58 contêineres deixou Newark, partindo para Houston. A emergência do transporte de carga containerizada foi um facilitador crucial para o desenvolvimento do comércio mundial. Contêineres tornaram-se uma rápida, confiável e econômica maneira de se transportar produtos diversos. Malcolm P. McLean é conhecido como o “Pai da Containerização”.
  • 10. Containerização e Docker O primeiro anúncio de Docker foi em uma conferência de Python em 2013 por Solomon Hykes, CEO na época da dotCloud. Docker foi criado, inicialmente, para que a gerência do PaaS (Platform as a Service) pudesse ser de forma mais simples, a ideia é que em vez de máquinas virtuais por debaixo dos panos, tudo rodaria em contêineres Linux.
  • 11. Para a parte de containerização, inicialmente, Docker utilizava a antiga tecnologia LXC (Linux Containers) que existe em toda distribuição Linux desde 2008. A partir da versão 1 o Docker substituiu o LXC pela libcontainer e a partir de junho de 2015 passou a utilizar o runC (Runtime Container), evolução da libcontainer, doada posteriormente ao OCI (Open Container Iniciative).
  • 13. Docker é uma plataforma open source usada para construir, executar e distribuir ambientes
  • 14. Que é uma forma de empacotamento/ conteinerização de infraestrutura portável e simples, na qual constitui facilmente várias "máquinas" executando no mesmo kernel, porém isoladas logicamente, usando as tecnologias runC.
  • 15. Tudo isso é possível por conta da Docker Engine...
  • 16. Fonte: Marcelo Cavalcante Rocha <http://migre.me/uW6EH>
  • 17. 2. arquitetura docker Como funciona por debaixo dos “panos”
  • 18. docker daemon usado para gerenciar os containers docker no host onde ele roda PARTES PRINCIPAIS DOCKER docker CLI usado para comandar e se comunicar com o docker daemon docker registry um repositório (público ou privado) para as imagens do docker
  • 21.
  • 22.
  • 23. docker images imagens instantâneas dos contêineres ou do S.O. básico (Ubuntu por exemplo) ELEMENTOS PRINCIPAIS DOCKER docker container diretórios contendo tudo que constitui sua aplicação. Dockerfiles scripts que automatizam o processo de construção de imagens
  • 24. DOCKER IMAGE é uma especificação do que o container vai possuir quando for executado.
  • 25. DOCKER CONTAINER Depende de uma imagem Geram novas imagens Conectividade com o host e outros containers Execução controlada - CPU,RAM,I/O,etc Descartáveis ou persistentes
  • 26. 3. instalação docker Configuração do ambiente onde o docker irá rodar
  • 27.
  • 28. INSTALAÇÃO NO WINDOWS E MAC OS 2 formas de instalação Docker for Windows Docker for Mac ou Docker Toolbox
  • 29. INSTALAÇÃO NO LINUX Apenas uma forma, simples e funciona!
  • 30. Na instalação no linux, você pode criar um grupo chamado docker e adicionar seu usuário, isso faz com que você tenha acesso e não precise ficar pedindo permissão com o sudo. $ sudo groupadd docker $ sudo usermod -aG docker $(whoami) $ docker info
  • 32. Em um terminal vamos executar: docker version ou docker -v para ver a versão do docker instalada.
  • 33. docker ps para ver os containers que estão rodando. docker ps -a Para ver todos os containers.
  • 34. Vamos rodar o comando docker run hello-world para criar um container a partir da imagem hello-world.
  • 35. docker info retorna uma lista de todos os containers, imagens, versão do docker, o drive do storage, entre outras informações. docker start id do container ou nome do container inicia um container docker stop id do container ou nome do container para um container docker rm id do container ou nome do container remove um container
  • 36. docker build docker commit docker create docker exec docker history docker logs docker images docker network docker pull docker restart docker rmi docker rename docker search
  • 37. Para ver todos os comandos que o docker possuí, utilize o docker help $ docker help A maioria dos comandos também possuem parâmetros, e para vê-los você pode utilizar o comando $ docker run --help
  • 38. DOCKER RUN O comando docker run é o comando principal do docker para criar containers a partir de imagens. Há duas formas de executar o comando docker run, em primeiro plano (foreground) e em segundo plano, ou como alguns chamam, desanexado (detached).
  • 39. Entre as várias opções, parâmetros que o run aceita, temos dois que iremos utilizar bastante, principalmente para testes. -i ou --interactive - mantém o STDIN aberto, possibilitando ver os outputs que estão acontecendo dentro do container. -t ou -tty - aloca de pseudo terminal TTY para processo rodando no container. É bem comum as opções -i e -t virem juntas.
  • 40. Outras opções, parâmetros: --rm - remove o container quando ele finaliza a execução. --name - atribui de nome a de container. --net - define o tipo de rede que será usada no container. -m ou --memory - define o máximo de memória alocada para o container. -e ou --env - define variáveis de ambiente e valores dentro do container. -h ou --hostname - define um host especifico para o container. -u ou user - define de usuário para o container. -w ou --workdir - define em qual diretório do container serão executados os scripts; por padrão é o /.
  • 41. DOCKER VOLUME -v ou --volume é a opção/ parâmetro ao qual é possível compartilhar de volume entre o docker host e o container. O parâmetro --volumes-from permite montar volumes de outros containers.
  • 42. Não é recomendado o uso do comando docker commit, é recomendado a construção de imagens usando o arquivo Dockerfile e o comando docker build.
  • 43. 5. dockerfile A receita para a criação de imagens
  • 44. Dockerfile é um arquivo que contém um conjunto de instruções necessárias para se criar uma imagem Docker
  • 45.
  • 47. CMD - define de comando a ser execu tado quando de container é criado. Pode ser sobrescrito. ENTRYPOINT - parecido com o CMD, a diferença do comando Entrypoint é que ele não será sobrescrito. WORKDIR - seta o diretório a ser trabalhado quando o container for instanciado. ENV - a instrução ENV serve para setar variáveis durante o processo de construção da imagem. USER - essa instrução serve para setar de usuário específico que a imagem deve rodar
  • 48. VOLUME - adiciona de volume para qualquer container criado a partir da imagem. ADD - adiciona arquivos ou diretórios dentro da nossa imagem. RUN - Essa instrução é responsável por executar comandos no shell. EXPOSE - serve para exportar as portas do container para o host. LABEL - define label para agregar mais informações para o container.
  • 50. é uma ferramenta para a criação e execução de múltiplos containers de aplicação.
  • 51. Com o Compose, você irá utilizar um único arquivo do tipo yaml para definir como será o ambiente de sua aplicação e usando um único comando você criará e iniciará todos os serviços definidos.
  • 54. REFERÊNCIAS Docker for mac <https://docs.docker.com/docker-for-mac> Docker for windows <https://docs.docker.com/docker-for-windows> Docker Toolbox <https://www.docker.com/products/docker-toolbox> Docker fo Linux <https://docs.docker.com/engine/getstarted/linux_install_help>
  • 55. DOCKER PARA DESENVOLVEDORES Livro sendo escrito por Rafael Gomes (@Gomex), é um livro no estilo pague o quanto quiser, ou mesmo nada. Se encontra no LeanPub.
  • 56. APRENDENDO DOCKER Livro escrito por Wellington Figueira da Silva, referência em Docker, publicado pela editora Novatec.
  • 57. CONTAINERS COM DOCKER Livro escrito por Daniel Romero, publicado pela Casa do Código.
  • 58. THE DOCKER BOOK Livro escrito por James Turnbull e vendido pela Amazon.
  • 59. DICAS Documentação Docker [En] <https://docs.docker.com/> Awesome Docker <https://github.com/veggiemonk/awesome-docker> Lista do Telegram <https://telegram.me/dockerbr>