SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
Docker:
Introdução à Conteinerização de Aplicações.
Palestrante: Marcel Fox.
contato@marcelfox.com
Este documento é parte da palestra de mesmo nome integrada no evento “Palestras sobre
Computação em Nuvem” apresentada no dia 2 de Junho de 2017 no IFPB. Apesar do
documento em si ser bastante esclarecedor, o mesmo se destina aos participantes da
palestra onde os tópicos foram abordados. Dito isto, é importante enfatizar que o documento
tenta ilustrar uma introdução ao Docker como solução à aplicações web priorizando o deploy
independente do sistema base.
Tópicos:
• O que são Containers?
Breve conversa sobre Nuvem, Container e a que ponto estamos.
• Docker.
Conteinerizando Aplicações.
• Build, Ship and GO!
Desenvolvedores e SysAdmins em paz ♥.
• Integração com a Nuvem.
Todo esse Hype Docker.
Introdução:
Antes de começarmos diretamente nos Containers, faz sentido iniciarmos a conversa
compreendendo melhor à respeito da estrutura da Nuvem por que o tópico é tão
atual porém, muitas vezes é negligenciado já que, a abstração é tão ampla neste
assunto, que acabamos por deixar de lado alguns detalhes importantes que envolvem
uma parcela grande do mercado de TI, que é a área de Web Hosting.
O início da Web:
Apesar de ser funcional na proposta e crescente em número de usuários, a Web era
bastante precária no início. As aplicações eram praticamente estáticas, muitas vezes
resumidas à e-mail e html puro, não chegando a consumir a totalidade dos recursos
que os servidores ofereciam. Com a popularização do Kernel Linux como força
motriz da Web e o auxilio do mesmo na nova prática da virtualização à partir do
Hypervisor ESXi, as máquinas virtuais surgiam.
A solução veio para aproveitar a totalidade de recursos que os servidores ofereciam,
trabalhando melhor também, o consumo de energia dos servidores. Logo outras
práticas de compartilhamento de recursos à nível de serviço surgiam e, em conjunto
com as máquinas virtuais (VPS), começavam a tornar os servidores mais flexíveis.
Essa melhora na estrutura abstraía cada vez mais os serviços, criando ambientes
completamente virtuais e compartilhados.
Grandes empresas começavam a enxergar na Web, possibilidades nunca antes
imaginadas, fomentando assim, uma corrida para alcançar novas propostas que
melhoravam a interação do usuário final tornando a Web cada vez mais intuitiva. A
Web como um ‘substantivo’, se tornava uma Web ‘verbo’ onde o usuário podia
interagir cada vez mais com os serviços.
Com o batismo da Web 2.0 e o surgimento de novos meios de acesso à web, as
aplicações traziam funcionalidades complexas e dependentes de recursos. Novas
tecnologias e linguagens de alto nível surgiam para adicionar cada vez mais
funcionalidade às aplicações que começavam a providenciar serviços de fato.
No lado da estrutura, a solução de virtualização precisava sair do conceito de
verticalização de estrutura para uma horizontalização de recursos. Para que isso
fosse possível, fazia-se necessário abstraír máquinas reais de forma que estas
trabalhassem em conjunto virtualizando camadas específicas para armazenamento
de dados, rede e demais componentes retornando assim soluções em escalabilidade,
load balance e alta-disponibilidade na Web.
A Nuvem:
Podemos definir o conceito básico da Nuvem em
serviços online onde os dados podem ser
trabalhados individualmente junto a plataforma da
aplicação, podendo ser acessados por quaisquer
dispositivo com acesso à Web.
Seguem abaixo os modelos principais de
Computação em Nuvem:
• SaaS (Software as a Service): Providencia serviços de software on-demand.
Ex: Office 365, Google Apps.
• PaaS (Platform as a Service): Providencia plataformas para a deploy de
aplicações, abstraíndo o ambiente.
Ex: Heroku, Azure.
• IaaS (Infrastructure as a Service): Abstrai todo um conjunto de máquinas,
rede, armazenamento e demais componetes de uma infraestrutura Web,
disponibilizando a mesma como um serviço.
Ex: OpenStack, Amazon EC2, Rackspace.
Assim, esses conceitos vieram para melhorar a interatividade com a Web trazendo
serviços e abstraíndo a forma como os mesmos funcionam, no entanto, existem ainda
muitos limites junto a Web. Um problema que ainda é bastante comum é o deploy de
aplicações no ambiente de produção.
O que são Containers?
Com a implementação da nova funcionalidade cgroups junto ao Kernel Linux desde a
versão 2.6.24, se tornou possível a abstração de sistemas completos à nivel de
processamento, sem a necessidade de um Hypervisor como o ESXi, que cria uma
camada acima do Kernel para simular todos os componentes de uma máquina real de
forma a servir a máquina virtual (VPS).
Com a chegada do Linux Containers (LXC), já era possível isolar sistemas
operacionais inteiros à nível de processamento, podemos então chegar a uma
definição da seguinte forma:
Container é o encapsulamento de sistemas inteiros à nível de processamento, onde
esses sistemas compartilham do hardware do host.
Ou seja, um Container LXC é executado de forma isolada e possui um PID. O LXC é
administrado por uma interface de linha de comando para criar, acessar e gerenciar
Containers.
Importante mencionar no entanto que existem outras ferramentas que providenciam
conteinerização para outros sistemas, como o Jails para FreeBSD, mas a idéia era a
mesma.
Limitações:
A grande maioria das ferramentas de conteinerização até então, eram baseadas no
módulo cgroup do Linux e só funcionava neste, e para este Kernel, isolando apenas
sistemas baseados em Linux. Isso contrastava diretamente com a virtualização
tradicional através de Hypervisors, que podiam simular diversos outros sistemas
operacionais e em diversos Hosts, independente de Kernel.
O deploy de aplicações permanecia sendo uma etapa problemática para os
desenvolvedores. A complexidade de configuração continuava a mesma, afinal, o
Container simula um sistema operacional completo, sendo necessário levatar todas
as dependências necessárias para que a aplicação fosse executada, bem como
serviços paralelos como base de dados e demais fatores para a produção.
Apesar do grande passo, os Containers eram específicos para sistemas dentro do
sistema principal, muitas vezes a conteinerização era indicada como uma forma de
isolar sistemas, para que estes, trabalhassem em conjunto sendo independente do
sistema principal. Deploy não era o foco principal de Containers até então.
Docker.
No envento PyCon de 2013, Solomon Hykes conseguiu falar em 5 minutos a respeito
do futuro dos Containers, trazendo em uma apresentação improvisada, uma prévia da
nova ferramenta, baseada no core da empresa DotCloud, utilizado para abstraír o
ambiente no deploy de aplicações em sua estrutura.
O que antes era um projeto complexo e sigiloso, foi melhorado para se tornar um
projeto Open Source que opera utilizando Conteiners de uma forma nunca antes
vista; conteinerização de aplicações à nível de processo sem a necessidade de se
levantar um sistema operacional, como ocorre no LXC.
Dessa vez as aplicações trabalhavam em um ambiente mínimo com dependências
básicas para o funcionamento, compartilhando das funcionalidades do próprio Kernel
do Host para criar estrutura de processos, rede, protocolos mesmo executando de
forma encapsulada. Os expectadores estavam presenciando uma tecnologia
revolucionária que permitia deploy de aplicações em diversos ambientes, abstraíndo
as dependências necessárias para a aplicação sem interferir no sistema real.
Não demorou muito para a empresa DotCloud mudar de nome para Docker e focar
apenas na nova ferramenta. A ferramenta solucionava principalmente o problema
clássico de “Dependency Hell” que ainda hoje, cria guerras homéricas entre DevOps
e SysAdmins, com o famoso: “Roda na minha máquina”.
Pela primeira vez, o deploy de aplicações em ambientes diversos estava sendo
simplificado, ampliando possibilidades para todo o mercado de Web Hosting. No lado
do desenvolvimento, a produção agora podia focar apenas na aplicação sem a
necessidade de lidar com gambiarras para se adequar ao ambiente de produção das
quais na maioria das vezes utilizam sistemas, serviços e versões diferentes de um
ambiente de desenvolvimento.
A Estrutura do Docker:
• Docker Daemon: Serviço principal de contêineres Docker (LXC) no host.
• Docker CLI: Interface de linha de comando que gerencia os contêiners.
• DockerFile: Imagem onde ambientes e configurações podem ser criados.
• DockerHub: Repositório de Imagens prontas.
(detalharemos melhor no próximo tópico, na prática!)
Build, Ship and GO!
O Docker é uma ferramenta que possui uma interface simples para uma tarefa tão
complexa executada à nível mais baixo. No tópico anterior tentamos esboçar a
funcionalidade da ferramenta e enfatisamos a importância deste serviço para o
deploy de aplicações de forma descomplicada.
A melhor forma para compreendermos a funcionalidade da aplicação no entanto, é a
prática! Segue abaixo um resumo das principais funcionalidades da interface de linha
de comando do Docker.¹
The action is GO!
Um comando básico para testes de funcionalidade após a instalação do Docker é o
“hello-world”, que na prática, não é um simples “Hello World” tradicional, veja a
saída:
Montando um Container com Dockerfile:
Com o Dockerfile, nós podemos criar um conjunto de instruções simples para
montarmos um Container exatamente de acordo com o que desejamos, salvando o
mesmo em uma imagem que poderá ser compartilhada junto ao DockerHub onde a
comunidade poderá melhorar a imagem se assim desejar, vamos começar?
Primeiro criamos um diretório específico para configurarmos a nossa Imagem, no
caso abaixo eu criei o seguinte diretório “../simple_flask/Dockerfile”. E neste
diretório configurei uma aplicação mínima baseada em Flask para o nosso exemplo,
veja os arquivos:
O único arquivo importante para a montagem da imagem de fato é o Dockerfile, os
outros arquivos dentro do diretório “app” fazem parte da aplicação Flask. Vejamos
como é a estrutura do Dockerfile:
(estrutura do Dockerfile)
Exmplicando em detalhes as intruções:
• FROM: Comando que especifica qual a imagem base a ser utilizada, como por
exemplo “FROM base/debian”.
• MAINTAINER: Aqui é onde informamos o responsável pela imagem.
• RUN: Executar comandos importantes na montagem, quando executamos a
mesma com o comando “docker build”.
• COPY: Executar uma cópia de um arquivo/diretório local para um local
específico junto à imagem.
• EXPOSE: Determinar a porta em que queremos que a container responda.
Existem diversas intruções para o Dockerfile que configuram melhor o ambiente
como “HOME” e “ENV”, mas os comandos acima são suficientes para nosso
ambiente basico.
Montando a Imagem do Dockerfile:
Agora que já compreendemos melhor a estrutura do Dockerfile, podemos prosseguir
montando a imagem com o seguinte comado:
$ docker build -t=marcelfox/simple_flask simple_flask/
Onde:
Usage: docker build [OPTIONS] PATH | URL | -
• “-t=”: Indica o repositório/nome_da_imagem que queremos salvar. E este é o
meu repositório no Dockerhub, para facilitar o envio com o “docker push”
Em execução:
É importante ressaltar que as instruções do configuradas no Dockerfile estão todas
sendo executadas na montagem (imagem anterior).
Para carregarmos ou baixarmos a imagem criada do container, bem como atualizar
modificações executadas posteriormente, podemos executar os seguintes comandos:
• “docker login”: Para efetuar o login em seu repositório no Dockerhub.
• “docker push repo/image”: Enviar a imagem para o Dockerhub.
• “docker pull repo/image”: Baixar a imagem para a máquina local.
Veja a execução:
Por fim, vamos analisar a execução do nosso container “simple_flask” exibindo uma
página baseada em flask localmente porém executada de dentro do container. Para
executarmos um container utilizamos o comando “docker run”.
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Vamos analisar em detalhes o comando:
• “--name”: Dá um nome ao container, se este parâmetro não for declarado, o
docker escolhe um nome inusitado para o container.
• “--net”: Este parâmetro especifica qual configuração de internet o container
irá utilizar, no caso estamos usando o parâmetro “host” que indica que o
container irá utilizar a rede do host, nos possibilitando executar um aplicativo
de forma local, sem a necessidade de configurar um ambiente inteiro para isso.
• “--rm”: Remove quaisquer instâncias ativas da imagem a executar.
• “-d”: Parâmetro que indica que o processo será executado em background.
Integração com a Nuvem:
Este mínimo e que finaliza nossa palestra para dar sentido a seguinte palestra: “Do
Zero ao Openstack” que foi apresentada no mesmo dia e em sequência.
Vimos que o Docker é uma ferramenta que veio para inovar o conceito de conteiner
priorizando o deploy, no entanto o docker ainda é uma ferramenta nova que já
caminha para versões mais estáveis com praticamente 4 anos de jornada até então.
Com certeza será uma tendência pro futuro e empresas grandes como a Google já
começaram a investir em ferramentas de Integração com a nuvem, como por
exemplo o Kubernets que é um sistema de automatização de criação, deploy e
escalonamento de Containers no ambiente Cloud, como por exemplo um ambiente
baseado no OpenStack, ferramenta cujo os detalhes vocês poderão ver na palestra da
sequência.
Obrigado pela atenção e espero que tenha gostado do material, quanto da
apresentação.
Seguem as fontes de pesquisa:
https://www.youtube.com/watch?v=wW9CAH9nSLs
https://prakhar.me/docker-curriculum/
http://anandmanisankar.com/posts/container-docker-PaaS-microservices/
https://www.ted.com/talks/philip_evans_how_data_will_transform_business?
language=pt-br#t-821291
https://developer.ibm.com/dwblog/2016/what-is-docker-containers/?
cm_mmc=PSocial_Twitter-_-Developer_Productivity-_-WW_US-_-
21289202_Tracking+Pixel&cm_mmca1=000019RT&cm_mmca2=10004795&cvosrc=
social%2520network%2520paid.twitter.US%2520%2520Handles%2520Docker_SD
%2520Behav_DesktopMobileTablet_1x1&cvo_campaign=Developer_Productivity-
WW_US&cvo_pid=21289202
“Stay Hungry, Stay Foolish”

Mais conteúdo relacionado

Mais procurados

Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerLuís Bianchin
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)Wellington Silva
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)TechCobli
 
São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2Azuki
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker BásicoAndré Justi
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerLucas Arbiza
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting dockerRafael Gomes
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?tdc-globalcode
 

Mais procurados (20)

Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre Docker
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
 
Workshop Docker
Workshop DockerWorkshop Docker
Workshop Docker
 
São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2
 
Docker meetup
Docker meetupDocker meetup
Docker meetup
 
Docker Itix
Docker ItixDocker Itix
Docker Itix
 
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
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e Docker
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
Docker
DockerDocker
Docker
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
 

Semelhante a Docker: Introdução à Conteinerização de Aplicações

Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersFrancisco Gonçalves
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...Renato Groffe
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Renato Groff
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Renato Groff
 
Docker introducao a sitemas de conteiners docker
Docker introducao a sitemas de conteiners dockerDocker introducao a sitemas de conteiners docker
Docker introducao a sitemas de conteiners dockerHerbethLucas1
 
Docker + Azure - Global Azure Bootcamp 2018 - São Paulo-SP
Docker + Azure - Global Azure Bootcamp 2018 - São Paulo-SPDocker + Azure - Global Azure Bootcamp 2018 - São Paulo-SP
Docker + Azure - Global Azure Bootcamp 2018 - São Paulo-SPRenato Groffe
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker ContainersHugo Henley
 
Docker + Azure - Global Azure Bootcamp 2018 - Campinas-SP
Docker + Azure - Global Azure Bootcamp 2018 - Campinas-SPDocker + Azure - Global Azure Bootcamp 2018 - Campinas-SP
Docker + Azure - Global Azure Bootcamp 2018 - Campinas-SPRenato Groff
 
Docker basicão e sem mistérios
Docker basicão e sem mistériosDocker basicão e sem mistérios
Docker basicão e sem mistériosIsaac Maciel
 

Semelhante a Docker: Introdução à Conteinerização de Aplicações (20)

Docker
DockerDocker
Docker
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Docker para iniciantes
Docker para iniciantesDocker para iniciantes
Docker para iniciantes
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
 
Docker - Básico
Docker - BásicoDocker - Básico
Docker - Básico
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
DevOpsDays Brasilia 2017
DevOpsDays Brasilia 2017DevOpsDays Brasilia 2017
DevOpsDays Brasilia 2017
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
 
Docker introducao a sitemas de conteiners docker
Docker introducao a sitemas de conteiners dockerDocker introducao a sitemas de conteiners docker
Docker introducao a sitemas de conteiners docker
 
Docker + Azure - Global Azure Bootcamp 2018 - São Paulo-SP
Docker + Azure - Global Azure Bootcamp 2018 - São Paulo-SPDocker + Azure - Global Azure Bootcamp 2018 - São Paulo-SP
Docker + Azure - Global Azure Bootcamp 2018 - São Paulo-SP
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
Docker + Azure - Global Azure Bootcamp 2018 - Campinas-SP
Docker + Azure - Global Azure Bootcamp 2018 - Campinas-SPDocker + Azure - Global Azure Bootcamp 2018 - Campinas-SP
Docker + Azure - Global Azure Bootcamp 2018 - Campinas-SP
 
Docker basicão e sem mistérios
Docker basicão e sem mistériosDocker basicão e sem mistérios
Docker basicão e sem mistérios
 

Último

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamentalAntônia marta Silvestre da Silva
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 

Último (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 

Docker: Introdução à Conteinerização de Aplicações

  • 1. Docker: Introdução à Conteinerização de Aplicações. Palestrante: Marcel Fox. contato@marcelfox.com Este documento é parte da palestra de mesmo nome integrada no evento “Palestras sobre Computação em Nuvem” apresentada no dia 2 de Junho de 2017 no IFPB. Apesar do documento em si ser bastante esclarecedor, o mesmo se destina aos participantes da palestra onde os tópicos foram abordados. Dito isto, é importante enfatizar que o documento tenta ilustrar uma introdução ao Docker como solução à aplicações web priorizando o deploy independente do sistema base. Tópicos: • O que são Containers? Breve conversa sobre Nuvem, Container e a que ponto estamos. • Docker. Conteinerizando Aplicações. • Build, Ship and GO! Desenvolvedores e SysAdmins em paz ♥. • Integração com a Nuvem. Todo esse Hype Docker.
  • 2. Introdução: Antes de começarmos diretamente nos Containers, faz sentido iniciarmos a conversa compreendendo melhor à respeito da estrutura da Nuvem por que o tópico é tão atual porém, muitas vezes é negligenciado já que, a abstração é tão ampla neste assunto, que acabamos por deixar de lado alguns detalhes importantes que envolvem uma parcela grande do mercado de TI, que é a área de Web Hosting. O início da Web: Apesar de ser funcional na proposta e crescente em número de usuários, a Web era bastante precária no início. As aplicações eram praticamente estáticas, muitas vezes resumidas à e-mail e html puro, não chegando a consumir a totalidade dos recursos que os servidores ofereciam. Com a popularização do Kernel Linux como força motriz da Web e o auxilio do mesmo na nova prática da virtualização à partir do Hypervisor ESXi, as máquinas virtuais surgiam. A solução veio para aproveitar a totalidade de recursos que os servidores ofereciam, trabalhando melhor também, o consumo de energia dos servidores. Logo outras práticas de compartilhamento de recursos à nível de serviço surgiam e, em conjunto com as máquinas virtuais (VPS), começavam a tornar os servidores mais flexíveis. Essa melhora na estrutura abstraía cada vez mais os serviços, criando ambientes completamente virtuais e compartilhados. Grandes empresas começavam a enxergar na Web, possibilidades nunca antes imaginadas, fomentando assim, uma corrida para alcançar novas propostas que melhoravam a interação do usuário final tornando a Web cada vez mais intuitiva. A Web como um ‘substantivo’, se tornava uma Web ‘verbo’ onde o usuário podia interagir cada vez mais com os serviços. Com o batismo da Web 2.0 e o surgimento de novos meios de acesso à web, as aplicações traziam funcionalidades complexas e dependentes de recursos. Novas tecnologias e linguagens de alto nível surgiam para adicionar cada vez mais funcionalidade às aplicações que começavam a providenciar serviços de fato. No lado da estrutura, a solução de virtualização precisava sair do conceito de verticalização de estrutura para uma horizontalização de recursos. Para que isso fosse possível, fazia-se necessário abstraír máquinas reais de forma que estas trabalhassem em conjunto virtualizando camadas específicas para armazenamento
  • 3. de dados, rede e demais componentes retornando assim soluções em escalabilidade, load balance e alta-disponibilidade na Web. A Nuvem: Podemos definir o conceito básico da Nuvem em serviços online onde os dados podem ser trabalhados individualmente junto a plataforma da aplicação, podendo ser acessados por quaisquer dispositivo com acesso à Web. Seguem abaixo os modelos principais de Computação em Nuvem: • SaaS (Software as a Service): Providencia serviços de software on-demand. Ex: Office 365, Google Apps. • PaaS (Platform as a Service): Providencia plataformas para a deploy de aplicações, abstraíndo o ambiente. Ex: Heroku, Azure. • IaaS (Infrastructure as a Service): Abstrai todo um conjunto de máquinas, rede, armazenamento e demais componetes de uma infraestrutura Web, disponibilizando a mesma como um serviço. Ex: OpenStack, Amazon EC2, Rackspace. Assim, esses conceitos vieram para melhorar a interatividade com a Web trazendo serviços e abstraíndo a forma como os mesmos funcionam, no entanto, existem ainda muitos limites junto a Web. Um problema que ainda é bastante comum é o deploy de aplicações no ambiente de produção.
  • 4. O que são Containers? Com a implementação da nova funcionalidade cgroups junto ao Kernel Linux desde a versão 2.6.24, se tornou possível a abstração de sistemas completos à nivel de processamento, sem a necessidade de um Hypervisor como o ESXi, que cria uma camada acima do Kernel para simular todos os componentes de uma máquina real de forma a servir a máquina virtual (VPS). Com a chegada do Linux Containers (LXC), já era possível isolar sistemas operacionais inteiros à nível de processamento, podemos então chegar a uma definição da seguinte forma: Container é o encapsulamento de sistemas inteiros à nível de processamento, onde esses sistemas compartilham do hardware do host. Ou seja, um Container LXC é executado de forma isolada e possui um PID. O LXC é administrado por uma interface de linha de comando para criar, acessar e gerenciar Containers. Importante mencionar no entanto que existem outras ferramentas que providenciam conteinerização para outros sistemas, como o Jails para FreeBSD, mas a idéia era a mesma. Limitações: A grande maioria das ferramentas de conteinerização até então, eram baseadas no módulo cgroup do Linux e só funcionava neste, e para este Kernel, isolando apenas sistemas baseados em Linux. Isso contrastava diretamente com a virtualização tradicional através de Hypervisors, que podiam simular diversos outros sistemas operacionais e em diversos Hosts, independente de Kernel. O deploy de aplicações permanecia sendo uma etapa problemática para os desenvolvedores. A complexidade de configuração continuava a mesma, afinal, o Container simula um sistema operacional completo, sendo necessário levatar todas as dependências necessárias para que a aplicação fosse executada, bem como serviços paralelos como base de dados e demais fatores para a produção. Apesar do grande passo, os Containers eram específicos para sistemas dentro do sistema principal, muitas vezes a conteinerização era indicada como uma forma de isolar sistemas, para que estes, trabalhassem em conjunto sendo independente do sistema principal. Deploy não era o foco principal de Containers até então.
  • 5. Docker. No envento PyCon de 2013, Solomon Hykes conseguiu falar em 5 minutos a respeito do futuro dos Containers, trazendo em uma apresentação improvisada, uma prévia da nova ferramenta, baseada no core da empresa DotCloud, utilizado para abstraír o ambiente no deploy de aplicações em sua estrutura. O que antes era um projeto complexo e sigiloso, foi melhorado para se tornar um projeto Open Source que opera utilizando Conteiners de uma forma nunca antes vista; conteinerização de aplicações à nível de processo sem a necessidade de se levantar um sistema operacional, como ocorre no LXC. Dessa vez as aplicações trabalhavam em um ambiente mínimo com dependências básicas para o funcionamento, compartilhando das funcionalidades do próprio Kernel do Host para criar estrutura de processos, rede, protocolos mesmo executando de forma encapsulada. Os expectadores estavam presenciando uma tecnologia revolucionária que permitia deploy de aplicações em diversos ambientes, abstraíndo as dependências necessárias para a aplicação sem interferir no sistema real. Não demorou muito para a empresa DotCloud mudar de nome para Docker e focar apenas na nova ferramenta. A ferramenta solucionava principalmente o problema clássico de “Dependency Hell” que ainda hoje, cria guerras homéricas entre DevOps e SysAdmins, com o famoso: “Roda na minha máquina”. Pela primeira vez, o deploy de aplicações em ambientes diversos estava sendo simplificado, ampliando possibilidades para todo o mercado de Web Hosting. No lado do desenvolvimento, a produção agora podia focar apenas na aplicação sem a necessidade de lidar com gambiarras para se adequar ao ambiente de produção das quais na maioria das vezes utilizam sistemas, serviços e versões diferentes de um ambiente de desenvolvimento. A Estrutura do Docker: • Docker Daemon: Serviço principal de contêineres Docker (LXC) no host. • Docker CLI: Interface de linha de comando que gerencia os contêiners. • DockerFile: Imagem onde ambientes e configurações podem ser criados. • DockerHub: Repositório de Imagens prontas. (detalharemos melhor no próximo tópico, na prática!)
  • 6. Build, Ship and GO! O Docker é uma ferramenta que possui uma interface simples para uma tarefa tão complexa executada à nível mais baixo. No tópico anterior tentamos esboçar a funcionalidade da ferramenta e enfatisamos a importância deste serviço para o deploy de aplicações de forma descomplicada. A melhor forma para compreendermos a funcionalidade da aplicação no entanto, é a prática! Segue abaixo um resumo das principais funcionalidades da interface de linha de comando do Docker.¹ The action is GO! Um comando básico para testes de funcionalidade após a instalação do Docker é o “hello-world”, que na prática, não é um simples “Hello World” tradicional, veja a saída:
  • 7. Montando um Container com Dockerfile: Com o Dockerfile, nós podemos criar um conjunto de instruções simples para montarmos um Container exatamente de acordo com o que desejamos, salvando o mesmo em uma imagem que poderá ser compartilhada junto ao DockerHub onde a comunidade poderá melhorar a imagem se assim desejar, vamos começar? Primeiro criamos um diretório específico para configurarmos a nossa Imagem, no caso abaixo eu criei o seguinte diretório “../simple_flask/Dockerfile”. E neste diretório configurei uma aplicação mínima baseada em Flask para o nosso exemplo, veja os arquivos: O único arquivo importante para a montagem da imagem de fato é o Dockerfile, os outros arquivos dentro do diretório “app” fazem parte da aplicação Flask. Vejamos como é a estrutura do Dockerfile: (estrutura do Dockerfile)
  • 8. Exmplicando em detalhes as intruções: • FROM: Comando que especifica qual a imagem base a ser utilizada, como por exemplo “FROM base/debian”. • MAINTAINER: Aqui é onde informamos o responsável pela imagem. • RUN: Executar comandos importantes na montagem, quando executamos a mesma com o comando “docker build”. • COPY: Executar uma cópia de um arquivo/diretório local para um local específico junto à imagem. • EXPOSE: Determinar a porta em que queremos que a container responda. Existem diversas intruções para o Dockerfile que configuram melhor o ambiente como “HOME” e “ENV”, mas os comandos acima são suficientes para nosso ambiente basico. Montando a Imagem do Dockerfile: Agora que já compreendemos melhor a estrutura do Dockerfile, podemos prosseguir montando a imagem com o seguinte comado: $ docker build -t=marcelfox/simple_flask simple_flask/ Onde: Usage: docker build [OPTIONS] PATH | URL | - • “-t=”: Indica o repositório/nome_da_imagem que queremos salvar. E este é o meu repositório no Dockerhub, para facilitar o envio com o “docker push” Em execução:
  • 9. É importante ressaltar que as instruções do configuradas no Dockerfile estão todas sendo executadas na montagem (imagem anterior). Para carregarmos ou baixarmos a imagem criada do container, bem como atualizar modificações executadas posteriormente, podemos executar os seguintes comandos: • “docker login”: Para efetuar o login em seu repositório no Dockerhub. • “docker push repo/image”: Enviar a imagem para o Dockerhub. • “docker pull repo/image”: Baixar a imagem para a máquina local. Veja a execução: Por fim, vamos analisar a execução do nosso container “simple_flask” exibindo uma página baseada em flask localmente porém executada de dentro do container. Para executarmos um container utilizamos o comando “docker run”. Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Vamos analisar em detalhes o comando: • “--name”: Dá um nome ao container, se este parâmetro não for declarado, o docker escolhe um nome inusitado para o container. • “--net”: Este parâmetro especifica qual configuração de internet o container irá utilizar, no caso estamos usando o parâmetro “host” que indica que o container irá utilizar a rede do host, nos possibilitando executar um aplicativo de forma local, sem a necessidade de configurar um ambiente inteiro para isso. • “--rm”: Remove quaisquer instâncias ativas da imagem a executar. • “-d”: Parâmetro que indica que o processo será executado em background.
  • 10. Integração com a Nuvem: Este mínimo e que finaliza nossa palestra para dar sentido a seguinte palestra: “Do Zero ao Openstack” que foi apresentada no mesmo dia e em sequência. Vimos que o Docker é uma ferramenta que veio para inovar o conceito de conteiner priorizando o deploy, no entanto o docker ainda é uma ferramenta nova que já caminha para versões mais estáveis com praticamente 4 anos de jornada até então. Com certeza será uma tendência pro futuro e empresas grandes como a Google já começaram a investir em ferramentas de Integração com a nuvem, como por exemplo o Kubernets que é um sistema de automatização de criação, deploy e escalonamento de Containers no ambiente Cloud, como por exemplo um ambiente baseado no OpenStack, ferramenta cujo os detalhes vocês poderão ver na palestra da sequência. Obrigado pela atenção e espero que tenha gostado do material, quanto da apresentação. Seguem as fontes de pesquisa: https://www.youtube.com/watch?v=wW9CAH9nSLs https://prakhar.me/docker-curriculum/ http://anandmanisankar.com/posts/container-docker-PaaS-microservices/ https://www.ted.com/talks/philip_evans_how_data_will_transform_business? language=pt-br#t-821291 https://developer.ibm.com/dwblog/2016/what-is-docker-containers/? cm_mmc=PSocial_Twitter-_-Developer_Productivity-_-WW_US-_- 21289202_Tracking+Pixel&cm_mmca1=000019RT&cm_mmca2=10004795&cvosrc= social%2520network%2520paid.twitter.US%2520%2520Handles%2520Docker_SD %2520Behav_DesktopMobileTablet_1x1&cvo_campaign=Developer_Productivity- WW_US&cvo_pid=21289202 “Stay Hungry, Stay Foolish”