Você está na página 1de 15

Docker Criando Containers

Antes de vermos sobre o Docker, precisamos saber mais como hospedamos


aplicaes e como surgiram os containers.

A evoluo do host de aplicaes

Antigamente, quando queramos montar o nosso sistema, com vrios servios


(bancos de dados, proxy, etc) e aplicaes, acabvamos tendo vrios
servidores fsicos, cada um com um servio ou aplicao do nosso sistema,
por exemplo:

E claro, no conseguimos instalar os servios diretamente no hardware do


servidor, ou seja, precisamos de um intermedirio entre as aplicaes e o
hardware, que o sistema operacional. Ou seja, devemos instalar sistemas
operacionais em cada servidor, e os sistemas poderiam ser diferentes:

E se quisermos que uma aplicao se comunique com outra ou faa qualquer


comunicao externa, devemos conectar os servidores rede. Alm disso,
para eles funcionarem, precisamos lig-los eletricidade. Logo, havia
diversos custos de eletricidade, rede e configurao dos servidores.
Alm disso, o processo era lento, j que a cada nova aplicao, deveramos
comprar/montar o servidor fsico, instalar o sistema operacional, configur-lo
e subir a aplicao.

Capacidade pouco aproveitada

O que foi falado anteriormente no era o nico problema desse tipo de


arquitetura. Era muito comum termos servidores parrudos, com uma nica
aplicao sendo executada, para normalmente ficarem funcionando abaixo da
sua capacidade, para quando for necessrio, o servidor aguentar uma grande
quantidade de acessos. Isso resultava em muita capacidade ociosa nos
servidores, com muitos recursos desperdiados.

Virtualizao, uma soluo?


Para fugir desses problemas de servidores ociosos e alto tempo e custo de
subir e manter aplicaes em servidores fsicos, surgiu como soluo
a virtualizao, surgindo assim as mquinas virtuais.
As mquinas virtuais foram possveis de ser criadas graas a uma tecnologia
chamada Hypervisor, que funciona em cima do sistema operacional,
permitindo a virtualizao dos recursos fsicos do nosso sistema. Assim,
criamos uma mquina virtual que tem acesso a uma parte do nosso HD,
memria RAM e CPU, criando um computador dentro de outro:
E se temos uma mquina virtual que est acessando uma parte do nosso
hardware como um todo, conseguimos colocar dentro dela uma das nossas
aplicaes. E replicar isso, criando mais mquinas virtuais com outras
aplicaes:
Assim, reduzimos a quantidade de servidores e consequentemente os custos
com luz e rede. Alm disso, dividimos melhor o nosso hardware, aproveitando
melhor os seus recursos e diminuindo a ociosidade.

Problemas das mquinas virtuais

Apesar de resolver os problemas do uso de vrios servidores fsicos, as


mquinas virtuais tambm possuem problemas. Para podermos hospedar a
nossa aplicao em uma mquina virtual, tambm precisamos instalar um
sistema operacional nela:
Cada aplicao necessita de um sistema operacional para poder ser executada,
e esses sistemas podem ser diferentes. E apesar dos sistemas operacionais
serem um software, eles possuem um custo de memria RAM, disco e
processamento. Ou seja, precisamos de uma capacidade mnima para manter
as funcionalidade de um sistema operacional, aumentando o seu custo de
manuteno a cada sistema que tivermos.

Alm disso, h um custo de configurao, isto , liberar portas, instalar


alguma biblioteca especfica, etc, toda uma configurao que um sistema
operacional pede. Tambm devemos sempre estar atentos sua segurana,
mantendo o sistema de cada mquina virtual sempre atualizado.

Muitas vezes, o tempo voltado para a manuteno das mquinas virtuais era o
mesmo tempo voltado para a nossa aplicao em si. Ou seja, acabvamos
dividindo o valor da nossa empresa, ao invs de focar somente nas aplicaes,
dividamos o trabalho com a manuteno dos sistemas operacionais.

Ento, como melhorar essa situao? Da surgiram containers, que sero


vistos no prximo vdeo.

Transcrio
Um container funcionar junto do nossos sistema operacional base, e conter
a nossa aplicao, ou seja, a aplicao ser executada dentro dele. Criamos
um container para cada aplicao, e esses containers vo dividir as
funcionalidades do sistema operacional:

No temos mais um sistema operacional para cada aplicao, j que agora as


aplicaes esto dividindo o mesmo sistema operacional, que est em cima do
nosso hardware. Os prprios containers tero a lgica que se encarregar
dessa diviso.
Assim, com somente um sistema operacional, reduzimos os custos de
manuteno e de infraestrutura como um todo.

Vantagens de um container
Por no ter possuir um sistema operacional, o container muito mais leve e
no possui o custo de manter mltiplos sistemas operacionais, j que s
teremos um sistema operacional, que ser dividido entre os containers.
Alm disso, por ser mais leve, o container muito rpido de subir, subindo
em questo de segundos. Logo, o container uma soluo para suprir o
problema de mltiplas mquinas virtuais em um hardware fsico, j que com
o container, ns dividimos o sistema operacional entre as nossas aplicaes.

Necessidade do uso de containers


Mas por que precisamos dos containers, no podemos simplesmente instalar
as aplicaes no nosso prprio sistema operacional? At por que j fazemos
isso, j que no nosso sistema operacional temos um editor de texto, terminal,
navegador, etc.
No caso das nossas aplicaes, essa abordagem pode ter alguns problemas.
Por exemplo, se dois aplicativos precisarem utilizar a mesma porta de rede?
Precisaremos de algo para isolar uma aplicao da outra. E se uma aplicao
consumir toda a CPU, a ponto de prejudicar o funcionamento das outras
aplicaes? Isso acontece se no limitarmos a aplicao. Outro problema que
pode ocorrer cada aplicao precisar de uma verso especfica de uma
linguagem, por exemplo, uma aplicao precisa do Java 7 e outra do Java 8.
Alm disso, uma aplicao pode acabar congelando todo o sistema. Por isso
bom ter essa separao das aplicaes, isolar uma da outra, e isso pode ser
feito com os containers.
Com os containers, conseguimos limitar o consumo de CPU das aplicaes,
melhorando o controle sobre o uso de cada recurso do nosso sistema (CPU,
rede, etc). Tambm temos uma facilidade maior em trabalhar com verses
especficas de linguagens/bibliotecas, alm de ter uma agilidade maior na hora
de criar e subir containers, j que eles so mais leves que as mquinas
virtuais.

Agora que j vimos a diferena entre mquinas virtuais e containers, chegou a


hora de introduzirmos o Docker nesse contexto, que se divide entre duas
coisas: a Docker, Inc., empresa que toma conta do Docker, e a tecnologia
dos containers.

Docker, Inc.
Primeiramente, devemos falar sobre a Docker, Inc., que no incio era
chamada de dotCloud. A dotCloud era uma empresa
de PaaS (Platform as a Service), sendo responsvel pela hospedagem da
nossa aplicao, levantando o servidor, configurando-o, liberando portas, etc,
fazendo tudo o que necessrio para subir a nossa aplicao. Outras exemplos
de empresas de PaaS so o Heroku, Microsoft Azure e Google Cloud
Platform.
Inicialmente, para prover a parte de infraestrutura, a dotCloud utilizava
o Amazon Web Services (AWS), servio que nos disponibiliza mquinas
virtuais e fsicas para trabalharmos. E para hospedar uma aplicao, sabemos
que precisamos do sistema operacional, mas a dotCloud introduziu o conceito
de containers na hora de subir uma aplicao, dando origem ao Docker,
tecnologia utilizada para baratear o custo de hospedar vrias aplicaes em
uma mesma mquina.
Ou seja, quando a dotCloud criou o Docker, sua inteno era economizar os
gastos da empresa, subindo vrias aplicaes em containers, em um mesmo
hardware do AWS, e com o passar do tempo a empresa percebeu que tinham
muitos desenvolvedores interessados na tecnologia que ela havia criado, a
tecnologia que permite a criao de containers, que faz o intermdio entre eles
e o sistema operacional, o Docker.

As tecnologias do Docker
O Docker nada mais do que uma coleo de tecnologias para facilitar
o deploy e a execuo das nossas aplicaes. A sua principal tecnologia
a Docker Engine, a plataforma que segura os containers, fazendo o
intermdio entre com o sistema operacional.
Outras tecnologias do Docker que facilitam a nossa vida e que veremos neste
curso so o Docker Compose, um jeito fcil de definir e orquestrar
mltiplos containers; o Docker Swarm, uma ferramenta para colocar
mltiplos docker engines para trabalharem juntos em um cluster; o Docker
Hub, um repositrio com mais de 250 mil imagens diferentes para os
nossos containers; e a Docker Machine, uma ferramenta que nos permite
gerenciar o Docker em um host virtual.

Open Source
Quando a empresa dotCloud tornou-se a Docker, Inc., focada em manter
o Docker, ela o abriu para o mundo open source, tudo disponibilizado no
seu GitHub, inclusive com vrias empresas contribuindo para o
desenvolvimento dessa tecnologia.
Apesar de haver alguns servios pagos, em sua grande parte a tecnologia do
Docker uma tecnologia open source, utilizada por vrias empresas. Ento,
vamos colocar as mos na massa e aprender a instalar o Docker nas prximas
aulas.

Como o Docker uma aplicao que se liga fortemente ao sistema


operacional e dependente de vrias de suas funcionalidades, a instalao
para cada um dos sistemas operacionais diferente, e vamos abordar o caso
do Windows neste vdeo:

Instalao principal no Windows


Existem duas possibilidades para instalar o Docker no Windows. Temos a
principal, utilizando o Docker for Windows, no qual podemos baixar o
instalador clicando aqui e a alternativa, utilizando o Docker Toolbox, que
veremos daqui a pouco.
Primeiramente, devemos nos atentar aos requisitos do uso do Docker for
Windows, ou seja, devemos possuir um Windows com:
Arquitetura 64 bits
Verso Pro, Enterprise ou Education.
Virtualizao habilitada
Em relao a este ltimo ponto, o Windows por padro j deixa a
virtualizao habilitada, podemos conferir acessando o Gerenciador de
Tarefas, e indo na aba Perfomance:
Se no seu caso a virtualizao no estiver habilitada, por favor poste no
frum do curso a verso do seu Windows e modelo do seu computador para
tentarmos ajud-lo pois cada fabricante de Hardware configura isto de
modos diferentes.
Seguimos o passo a passo do instalador para aceitar a licena, autorizamos o
instalador e seguimos com a instalao. Ao clicar em Finish, precisamos
encerrar a sesso do Windows e inici-la novamente. Ao fazer o login,
precisamos habilitar o Hyper-V, clicando em Ok, para que o computador ser
reiniciado.
Quando o computador terminar a reinicializao, ir aparecer um cone do
Docker na barra inferior, direita, ao lado do relgio. O Docker pode demorar
um pouco para inicializar, mas quando a mensagem Docker is running for
exibida, significa que ele foi instalado com sucesso e j podemos utiliz-lo.

Funcionamento do Docker no Windows


O Docker executado em cima de uma micro mquina virtual,
chamada Alpine Linux, onde ser executada a sua Docker Engine:
Mas para criar mquinas virtuais, o Docker precisa utilizar uma tecnologia
chamada de Hyper-V, que um Hypervisor. O problema disto que o Hyper-
V s est presente nas verses Professional, Education e Enterprise, ou seja,
a maioria dos usurios comuns, que utilizam a verso Home Edition, no
podero instalar o Docker pelo modo tradicional, e ter que utilizar o Docker
Toolbox.
Alm disto, a principal ferramenta de instalao , o Docker for
Windows necessita que voc esteja utilizando um Windows 10 - 64 bits, com
uma das verses citadas acima.

Vamos agora ento detalhar o processo de instalao para cada esse caso

Instalao alternativa no Windows


Para instalar o Docker Toolbox, primeiramente devemos baix-lo aqui.
Ainda assim, precisamos garantir que o nosso Windows seja 64bits e que ele
tenha a virtualizao habilitada.
O Docker Toolbox vai instalar tudo que necessrio para que trabalhemos
com o Docker em nosso computador, pois ele ir instalar tambm a Oracle
VirtualBox, a mquina virtual da Oracle que vai permitir executarmos o
Docker sem maiores problemas.
A diferena que, quando trabalhamos com o Docker for Windows,
podemos utilizar o terminal nativo do Windows, j no Docker Toolbox, ele
instalar o Docker Machine, que dever ser utilizado no lugar do terminal
nativo do Windows.

Para instalar o Docker no macOS, utilizamos o Docker for Mac, no qual


podemos baixar o instalador clicando aqui.
Primeiramente, devemos nos atentar aos requisitos do uso do Docker for
Mac, ou seja, devemos possuir um macOS:
Modelo 2010 ou mais recente
Verso OS X El Capitan 10.11 ou mais recente
Com no mnimo 4GB de memria RAM
Sem VirtualBox instalada na verso 4.3.30 ou anterior, pois causa
incompatibilidade com o Docker
A pgina dos requisitos pode ser acessada aqui.
Caso voc no atinja algum desses requisitos, h uma instalao alternativa,
o Docker Toolbox, que ser visto mais adiante, ento no se preocupe.
Com isso, podemos instalar o Docker, clicando no .dmg baixado
anteriormente e arrastando o Docker para as nossas aplicaes. Aps isso, j
podemos pesquisar pelo Docker, confirmar que queremos utiliz-lo e damos
acesso privilegiado a ele, clicando em OK e digitando a senha de
administrador em seguida.
No menu superior do macOS, direita, o cone do Docker aparecer. Ele pode
demorar um pouco para inicializar, mas quando a mensagem Docker is now
up and running! for exibida, significa que ele j pode ser utilizado.

Funcionamento do Docker no macOS


O Docker executado em cima de uma micro mquina virtual,
chamada Alpine Linux, onde ser executada a sua Docker Engine:
Mas para criar mquinas virtuais, o Docker precisa utilizar uma tecnologia
chamada de HyperKit, que um Hypervisor. O problema disto que
o HyperKit s est presente na verso OS X El Capitan 10.11 ou mais recente.
Mas uma alternativa instalar o Docker Toolbox.

Vamos agora ento detalhar o processo de instalao para cada esse caso

Instalao alternativa no macOS


Para instalar o Docker Toolbox, primeiramente devemos baix-lo aqui.
O Docker Toolbox vai instalar tudo que necessrio para que trabalhemos
com o Docker em nosso computador, pois ele ir instalar tambm a Oracle
VirtualBox, a mquina virtual da Oracle que vai permitir executarmos o
Docker sem maiores problemas.
A diferena que, quando trabalhamos com o Docker for Mac, podemos
utilizar o terminal nativo do macOS, pois o terminal est sendo executado
dentro do prprio sistema operacional. J no Docker Toolbox, ele instalar
o Docker Machine, que dever ser utilizado no lugar do terminal nativo do
macOS.

Neste passo-a-passo, ser visto como instalar o Docker no Ubuntu 64 bits.


Todos os comandos listados devem ser executados no seu terminal.

Antes de mais nada, remova possveis verses antigas do Docker:

sudo apt-get remove docker docker-engine docker.io

Depois, atualize o banco de dados de pacotes:

sudo apt-get update

Agora, adicione ao sistema a chave GPG oficial do repositrio do Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key


add -

Adicione o repositrio do Docker s fontes do APT:

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Atualize o banco de dados de pacotes, pare ter acesso aos pacotes do Docker a
partir do novo repositrio adicionado:

sudo apt-get update


Por fim, instale o pacote docker-ce:
sudo apt-get install docker-ce

Caso voc queira, voc pode verificar se o Docker foi instalado corretamente
verificando a sua verso:

sudo docker version


E para executar o Docker sem precisar de sudo, adicione o seu usurio ao
grupo docker:
sudo usermod -aG docker $(whoami)

Você também pode gostar