Por Thiago Marques
O pai ta on!!
No último artigo falamos um pouco sobre os problemas que o docker veio para solucionar, como efetuar a instalação no nosso ambiente de laboratório, além de alguns comandos básicos para gerenciamento.
Agora falaremos sobre como fazer o deploy de forma manual de uma imagem, e como utilizar o docker compose para realizar o deploy da nossa aplicação de forma mais amigável.
Pull de imagens
Um dos recursos presentes no docker é o Docker Hub, que é um repositório com as imagens de containers criadas pela comunidade ou por empresas. Assim todas as vezes que rodamos o docker run, o software busca primeiramente se já existe uma imagem no repositório local (docker images), e em caso negativo faz a procura no i no docker hub e consequentemente o download da imagem.No backend do processo do download, o docker executa o docker pull, e na sequência roda o docker run.
]Em nosso laboratório vamos fazer o pull do tacacs_server disponibilizado pela openswitch. Isso pode ser feito após uma busca direta no site do docker hub por “tacacs_server”, ou direto na CLI com o comando:
Depois do pull, conseguimos verificar todas as imagens baixadas com o Docker images.
Perceba que com esse comando fazemos APENAS o download da imagem, e não a execução do container. Para isso iremos executar o docker run:
Onde:
• -d: para o docker executar em segundo plano;
• –name: para dar um nome para o container;
• -p 49:49: para mapear a porta 49 externa (do host) na 49 interna (do container);
Com isso teremos nosso container criado:
Docker compose
Como vimos, realizar o deploy de uma máquina manualmente contém diversos parâmetros (para subir UM container e isso porque não fizemos o mapeamento de volumes). Imagine precisar realizar o deploy de uma aplicação com banco de dados, servidor web e balanceador. Errar em um comando pode impactar na aplicação como um todo.
O Docker compose, vem para sanar esse problema, pois consegue orquestrar múltiplos containers, tudo escrito em um arquivo em YAML (.yml), e nele colocamos tudo que queremos e precisamos para subir a aplicação, como um container para banco de dados com um volume persistente, um container web com exposição da porta HTTP etc.
Instalação
1 – Efetue o download do docker-compose:
2 – De permissão de execução ao arquivo
docker-compose.yml
Com o docker-compose instalado vamos a criação do arquivo .yml, e a explicação das linhas que ele contém.
Iniciamos com a versão 3, que atualmente é a mais recente.
Na sequência iniciamos a configuração do serviço que queremos subir.
O ‘tacacs’ aqui é apenas um nome, e poderia ser qualquer coisa, o que mais importa é a linha ‘image: openswitch/tacacs_server’, que de fato informa qual imagem vamos utilizar. Note que, o arquivo trabalha com indentação , assim MUITA atenção nos espaços.
O container_name, tem a mesma função o –name que utilizamos na linha de comando, assim como o ports, possui a mesma função do -p. A diferença aqui via para o restart, que basicamente vai reiniciar o container se ele ja estiver parado (eliminando a necessidade de fazer um prune), e os volumes.
Os volumes são mapeamentos que fazemos do que está no host para o container. Isso é feito para garantir que quando removermos, pararmos ou reiniciarmos o container as informações importantes não sejam perdidas (persistência). Em nosso exemplo vamos deixar persistentes o arquivo de configuração do tac_plus, e o arquivo de log. Adicionei também os timezones, pois na grande maioria das vezes o container sobe com o horário errado.
Utilização
1 – Crie uma pasta chamada ‘tacacs’ dentro de /opt:
2 – Nela baixe o arquivo abaixo:
3 – Crie um arquivo de log:
4 – Pare e remova o container antigo, e depois inicie o docker-compose em backend:
Com isso criamos nosso serviço de tacacs para o laboratório, e garantimos que mesmo se o container for parado ou excluído os logs e o arquivo de configuração será mantido.
That’s all folks! Be Happy!!!