Você está na página 1de 37

Docker – Solução de Container

Índice

• Portainer
• 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
Portainer

• O Portainer é um gerenciador de container, OpenSource,


disponibilizado através de uma interface WEB.
• É executado a partir de uma imagem docker.
• Solução para gerenciamento de recursos como imagens e
containers Docker, networks, volumes, Serviços , Swarm, etc.
• Sua versão aberta é o Portainer Community Edition OpenSource.
• A Equipe do Portainer oferece de forma não gratuita extensões e
suporte. Entre as extensões temos Autenticação Externa,
Gerenciamento de Registro, entre outros.
Imagem Portainer

• A imagem do portainer pode ser baixada usando o docker.


Podemos utilizar o comando abaixo para baixar a imagem:

docker pull portainer/portainer

Em nosso exemplo iremos utilizar o Play with Docker para nosso


LAB, mas pode ser utilizando tanto em Linux como Windows.
Imagem Portainer

Vamos baixar a imagem do portainer. Iremos posteriormente


executa-la através de um container docker em ambiente separada,
para conhecermos um pouco mais da ferramenta. Posteriormente
subiremos em nosso ambiente Cluster Swarm.
Executando o Portainer

Algumas infomações são necessárias para executarmos um


container portainer, entre elas estão:
• -d O container será executado no modo daemon.
• -p Vamos atribuir uma porta para comunicação, o portainer é
executado na porta 9000.
• --name Especificará o nome do container.
• --restart always Inicia o container portainer
automaticamente.
• -v Devemos informar o volume do socket local do docker,
normalmente localizado em /var/run/docker.sock, e também
onde os dados serão armazenados normalmente /data.
Executando o Portainer

• Sabendo todas informações citadas anteriormente vamos


executar o Portainer:

mkdir –p /portainer/data

docker run -d -p 9000:9000 --name portainer --restart


always -v /var/run/docker.sock:/var/run/docker.sock -v
/portainer/data:/data portainer/portainer
Executando o Portainer
Acessando o Portainer
• Para acessar basta clicar no link da porta 9000, que será
direcionado para o ambiente do Portainer.
• Num primeiro momento, será solicitado a senha, já que não
passamos uma inicialmente. Defina uma senha como solicitado.
Configurando o Portainer
• Ao definir a senha, será iniciado a sessão como administrador, e
o próximo passo é informar qual o ambiente de gerenciamento.
Neste momento iremos atuar localmente. Selecione Local e em
seguida connect.
Acessando nosso ambiente

• Para acessar o ambiente, basta clicar no End Point que foi


exibido anteriormente. E será levado para tela de gerenciamento.
Gerenciamento com Portainer

• No Dashboard principal, é exibido um resumo, sobre os stacks,


container, imagens, volumes e redes.
• Podemos ver que temos várias sessões aos lado esquerdo, para
gerenciamento dos mesmo itens listados no dashboards, e mais
algumas informações.
• No item Host, poderemos obter informações sobre o Host, em
termos de Uso de CPU, Memória, versão de SO, Kernel entre
outras informações.
• Note que não temos informações sobre o SWARM neste
momento
Gerenciando Containers

• Na sessão container, poderemos gerenciar nosso containers.


Onde é permitido Iniciar, parar, restart, pausar, remover e
adicionar novos containers.
• Em primeiro momento, somente o container portainer será
exibido.
Adicionar um novo Container

Vamos adicionar um novo container. Para isso selecione Add


Container, em name preencha com um nome, por exemplo
webserver, no nome da imagem nginx, altere para Manual Publish
Port e adicione uma nova porta.
A porta do host será 8080 e do container 80.
Em Enable access control é possível gerenciar o acesso ao
container.
Depois de tudo configurado, basta clicar no botão Deploy the
Container
Adicionar um novo Container
Adicionar um novo Container

Após criamos teremos a imagem abaixo.


Algumas ações pode ser tomadas como Logs, Inspect, Stats e Exec
Console em Quick Actions. Abaixo a imagem do Stats, que nos
exibe informações do uso de recursos do container.
Acessando o Container
Podemos acessar nosso novo voltando ao Play With Docker, e
selecionado o link da porta 8080.
Outras informações

• Além dos container, podemos gerenciar nossas imagens (


download de imagens, criar nossa imagens editando o DockerFile
diretamente no browser, fazendo upload do arquivo ou passando
uma URL.
• Em Stacks podemos editar no browser similar ao Docker
Compose. Da mesma forma que nas imagens, podemos editar no
browser, fazer upload ou simplesmente passar uma URL.
• Network e Volumes, faremos gerenciamento das redes e
volumes.
Removendo toda configuração
Vimos o funcionamento do Portainer, e agora vamos remover os
containers, e o próprio Portainer para executa-lo em nosso
ambiente de Cluster Swarm.
É possível remover o webserver tanto em linha de comando com
docker rm id, como via portainer, selecionando o container em
seguida remove.
Removendo toda configuração

Podemos remover diretamente via CLI no Play With Docker. Abaixo


removendo o container do portainer.
Nosso Ambiente

Agora iremos introduzir o Portainer em nosso ambiente Cluster


Swarm. Então para relembrar, temos 3 Hosts onde 1 responde por
Manager e outros dois por Workers.
Nosso ambiente está executando 10 instancias em cluster da
imagem francois/apache-hostname.
Preparando o Manager
Devemos criar as pastas que armazenarão os dados do Portainer,
de forma que poderemos persistir os dados em caso,
reinicialização.

mkdir /portainer/data
Criando o serviço Portainer

• A grande vantagem de inicializar um container utilizando o


recurso do Docker Swarm é que podemos contar com alta
disponibilidade do container, deste modo, supondo que
tenhamos um Cluster com 3 nós, sendo que 3 deles atuam no
modo manager. Deste modo, caso um nó que atue como
manager fique indisponível, o Docker Swarm irá alocar outro
container em um dos nós que está no modo Manager.
• Para que o Docker Swarm possa alocar um container no Cluster,
e tal alocação ocorra apenas em nós que são managers, iremos
usar um recurso de contraint, que permitirá definir que somente
Managers podem conter o container do portainer.
Criando o serviço Portainer
docker service create --name portainer -p 9000:9000 --constraint
'node.role == manager' --mount
type=bind,src=/portainer/data,dst=/data --mount
type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock
portainer/portainer --no-auth -H unix:///var/run/docker.sock

• A Constraint informa que o node deve ser um manager, para que


execute o container.
• O parâmetro --no-auth, faz com que o portainer não exija
autenticação.
• O parâmetro –H, faz com que o Portainer consiga estabelecer
uma conexão TCP (via unix socket) com o host manager onde
está sendo executado, dessa forma o Portainer conseguirá
comunicar-se com API Docker sem utilizar conexões TCP/IP.
Criando o serviço Portainer

• Podemos visualizar na imagem abaixo que nosso container


Portainer está sendo executado no node1, já que o mesmo é um
Manager e que um link para porta 9000 foi criado.
Acessando o Portainer

• Para accesar o container Portainer, basta clicar no link da porta


9000.
Acessando o Portainer

• Podemos ver na imagem anterior, que o menu aumentou,


trazendo agora informações de Services e Swarm.
• Vamos dar uma olhada no Swarm. Ele nos traz informações dos
Nodes, Uso de memória , CPU, etc.
Menu Swarm
• Podemos visualizar quais os containers em cada nodo, clicando
em Go to Cluster visualizer.
Menu Service

• No menu Service, podemos visualizar nossos serviços, bem como


executar novos serviços.
• É possível fazer escalonamento diretamente nesta tela, clicando
em Scale.
Menu Service
Selecionando qualquer serviço, uma nova tela será exibida:
• informações sobre o serviço
• Escalonamento
• Menu de navegação rápida
Executando operações Básicas
• Vamos ao menu Container. Podemos verificar que temos menos
container que o total do serviço.
• Isso por que está trazendo os container somente deste Host, do
manager.
Executando operações Básicas
• Podemos realizar várias operações, como parar, matar, reiniciar e
etc.
• Acessando um container, muitas informações sobre mesmo será
exibida.
Executando operações Básicas
• Neste momento, irá trazer informações sobre este container.
Selecione Exec Console (Quarta imagem do Quick Action), e
clique no botão Connect.
Executando operações Básicas

• Ao executar o connect um terminal do container em questão será


exibido, de forma que será possível executar qualquer comando.
Executando operações Básicas

• Podemos executar um ping no nome DNS do Swarm, graças a


rede overlay, que cria esse DNS interno.
Criando um serviço
• Iremos criar um serviço através do Portainer, veremos que
é bem fácil a criação da aplicação.
• Vá em services e selecione + Add service. Configure como
a imagem abaixo:
Testando o serviço

Para testar o serviço, basta executar um dos endereços dos nós na


porta 8081

Você também pode gostar