Você está na página 1de 34

Docker – Solução de Container

Índice

• Docker Swarm
• Características do Docker Swarm
• Instalando VirtualBox
• Utilizando o VirtualBox com Docker Machine
• Acessando Host VirtualBox
• Gerenciando Instâncias no VirtualBox
• Docker Machine na AWS
• Criando as chaves na AWS
• Configurando o ambiente Docker Machine AWS
• Gerenciar Instâncias na AWS
Docker Swarm

• Docker Swarm é uma ferramenta nativa desde a versão 1.12,


utilizada para gerenciamento e escalonamento de cluster.
• Com o Swarm você consegue construir clusters de containers
com características importantes como balanceador de cargas e
failover.
• Para criar um cluster com o Swarm, basta indicar quais os hosts
que ele irá supervisionar e o restante é com ele.
Características do Swarm
• Gerenciamento de cluster integrado ao Docker: Através do CLI
Docker você faz todo gerenciamento e orquestração do seu
cluster, sem necessidade de ferramentas adicionais.
• Design descentralizado: Ao invés de lidar com diferentes hosts,
e containers, o docker Swarn gerencia de forma transparente.
• Escalonamento: Você pode determinar o números de tarefas que
deseja executar para determinados serviços. Podendo diminuir
ou aumentar em tempo de execução.
• Conciliação de Estado: Mantêm o estado de execução solicitado,
mesmo que haja problema em hosts. Ou seja, se um worker está
executando duas réplicas do aplicativo e tenha problema, o
swark manager (gerenciador) alocará essas duas réplicas em
outro host do cluster.
Características do Swarm
• Multi-Host Network: Você pode especificar uma rede de overlay
para seus serviços. A criação de uma rede para utilização no
serviço que implantaremos no Cluster é importante, pois através
desta rede conseguiremos disponibilizar a funcionalidade de
balanceamento de carga, sem necessitar configurar um
balanceador externo, por exemplo, baseado no NGINX ou
HAProxy.
• Serviço de Descoberta: o Swarm Manager atribuem a cada
serviço um único nome DNS e VIP e entrega para cada contêiner
da mesma rede.
• Balanceamento de Carga: O próprio swarm irá gerenciar o
balanceamento de carga entre os hosts, bastando expor apenas
a porta do serviço.
Características do Swarm

• Segurança por padrão: cada nó no swarm impõe autenticação


mútua e criptografia TLS para proteger as comunicações entre
ele e todos os outros nós. Você tem a opção de usar certificados
raiz auto assinados ou certificados de uma CA raiz
personalizada.
• Atualizações Continuas: no momento da distribuição, você pode
aplicar atualizações de serviço aos nós de forma incremental. O
Swarm manager permite controlar o delay entre o deploy da
implementação do serviço para diferentes nodes. Se caso der
errado, poder retroceder para uma versão anterior do serviço.
Docker executado anteriormente

• Somente era possível executar o docker na máquina local, e


gerenciar localmente.
Usando Docker-Machine

• Provisionando Hosts Docker remotamente


Diferenças entre Docker e Docker
Machine
• Quando as pessoas dizem “Docker”, normalmente significa o
Docker Engine, o aplicativo cliente-servidor composto pelo
daemon Docker, uma API REST que especifica interfaces para
interação com o daemon e um cliente CLI (interface de linha de
comando) que fala com o daemon (através do wrapper da API
REST). O Docker Engine aceita comandos do docker da CLI, como
docker run <image> para executar uma imagem, o docker ps
para listar contêineres em execução, docker image ls para listar
imagens e assim por diante.
Diferenças entre Docker e Docker
Machine
• O Docker Machine é uma ferramenta para provisionar e
gerenciar seus hosts Dockerized (hosts com Docker Engine ).
Normalmente, você instala o Docker Machine em seu sistema
local. Você pode usar o Machine para instalar o Docker Engine
em um ou mais sistemas virtuais. Esses sistemas virtuais podem
ser locais ou remoto Os próprios hosts Dockerized podem ser
considerados e às vezes são chamados de “máquinas”
gerenciadas.
Instalando o Docker Machine

Para Windows e Mac o docker machine é instalado juntos com


outros produtos Docker, quando é instalado com o Docker para
Mac, Docker para windows ou Docker Toolbox.
Caso queira somente o Docker Machine, é possível instalar somente
o os binários na máquina.
Para macOS:
Instalando o Docker Machine
Para Linux:

Para Windows:
Instalando o Docker Machine
Uma vez instalado, execute o comando version do docker-machine
para ver se está tudo ok.
Utilizando VirtualBox

Neste exemplo para gerenciamento de Hosts via docker-machine,


usaremos o virtualbox da própria máquina, para tanto é necessário
instala-lo.

apt-get install virtualbox


Criando a máquina Host
Iremos criar a máquina Host através do docker-machine. Esse
máquina será criada no virtualbox, e é onde deveremos subir
nossas instancias.
Obs: É necessário que a máquina gerenciadora de hosts (onde está
o docker-machine é necessário já estar instalado o docker)
Podemos ver abaixo o comando para listar as máquinas existentes.
Criando a máquina Host

Neste momento iremos executar o docker-machine create, para


criação de nosso Host. A opção --driver informa qual tipo de Host
será criado, como virtualbox, aws, google cloud entre outros.
Criando a máquina Host

Para listar os Host existentes execute o comando ls do docker-


machine
Acessando a máquina Host
Para acessar os dados é necessário criar as variáveis de ambiente,
apontando para o host, isso é feito automaticamente através do
comand docker-machine env.
A saída desse comando irá gerar o comando de acesso ao ambiente
do Host. No caso abaixo eval “$(docker-machine env default)”. A
máquina Host é a default neste caso.
Executando Containers no Host
Uma vez que o a máquina local foi configurado para enviar
comandos para o Host através do comando eval “(docker-machine
env <NOME DO HOST>”. Basta executamos comandos padrão do
docker para executar o container
Testando Acesso aos Containers
Para testarmos o HOST, primeiramente devemos ter o
endereço IP, e posteriormente criar um container como
nginx por exemplo.

Agora executamos container com redirecionamento de porta.

Acessando o container
Iniciando e parando Machines

Se for necessário parar um HOST ou iniciar, podemos usar os


comandos start e stop do docker-machine.
Removendo as variáveis de ambiente
Execute env | grep DOCKER para visualizar as variáveis que foram
criando pelo comando env.
Uma das formas de remover, seria removendo todas as variáveis
como o comando unset.
Removendo as variáveis de ambiente

A segunda forma, é solicitando o comando para o docker-machine,


para remover as variáveis de ambiente de determinado HOST,
através do docker-machine env –u.
O comando retornado foi eval $(docker-machine env –u).
Executando esse comando, todas variáveis serão deletas.
Docker Machine na AWS
A primeira coisa a ser feita , e criar uma conta com acesso ao EC2,
caso tenha somente root, pode ser utilizado.
Para criar as chaves vá em Services > IAM > Usuários. Selecione o
usuário, em seguida vá para guia Credencias de Segurança.
Clique no Botão Criar chave de acesso.
Docker Machine na AWS
Com as chaves em mão, podemos configurar nosso ambiente para
que possamos criar Hosts na AWS. É possível fazer a
configuração das chaves em um arquivo ou simplesmente passar
via linha de comando.
Neste momento iremos criar em um arquivo em ~/.aws/credentials,
com o seguinte conteúdo.
Criando o Host na AWS
O comando para criar o Host é o mesmo visto anteriormente, mas
iremos alterar o driver. Por padrão, novas instancias são criadas na
região us-east1 (North Virginia). Mas é possível especificar uma área
diferente usando a opção –amazonec2-region. Veja o comando
abaixo:

docker-machine create --driver amazonec2 --amazonec2-open-


port 8000 --amazonec2-region us-west-1 aws-sandbox

Por padrão, a porta 22, e 2376 são abertas, através da criação do


Security Group docker-machine.
Criando o Host na AWS

No comando anterior usamos o arquivo credentials, para passar


informações sobre nossas chaves para o AWS. Mas é possível passar
essas informações em linha de comando. Veja o comando abaixo:

docker-machine create --driver amazonec2 --amazonec2-access-


key AKI******* --amazonec2-secret-key 8T93C******* aws-sandbox

Através dos itens –amazonec2-access-key e –amazonec2—secret-


key, passamos as mesmas informações que estão no arquivo.
Verificando o Host

Logando na AWS, selecionando Norte da Califórnia, poderemos ver


nossa instancia já em execução.
Verificando os Hosts
Neste momento, quando pedirmos para o docker-machine listar
nossos hosts, deverão aparecer o Host Local e AWS, com seus
respectivos IP.
Inspecionando o Host

Podemos inspecionar a máquina utilizando docker-machine inspect


<machine>, que traz muitos detalhes, e para trazer informações
sobre endereçamento ip, basta utilizar o docker-machine ip
<machine>.
Executar comandos para nova
instancia
Vamos subir um imagem, verifica se está up diretamente no Host
AWS. Não esqueça de criar as variáveis com o comando eval
$(docker-machine env aws-sandbox). Primeiramente executar um
container.

Acessar o Host via ssh, através do docker-machine.

Deletar as variáveis do docker-machine e verificar containers local.


Testando instâncias na AWS

Iremos criar um nov container em nosso Host AWS, rodando um


nginx na porta 8000, que já foi liberada anteriormente.

Agora executando o container


Testando instâncias na AWS

Agora podemos acessar a instância na internet porta 8000. Para


pegar o endereço ip, basta usar o comando docker-machine ip aws-
sandbox
Remover o Docker Machine

Para remover o Docker Machine:


• Remova as máquinas criadas : docker-machine rm <machine>,
para remover todas as maquinas: docker-machine rm –r
$(docker-machine ls –q)
• Remova o executável do docker-machine: rm $(which docker-
machine)

• Obs: Também poderá remover o bash-completation e


configurações do bashrc opcionalmente.