• Jefferson Mendonça

Docker: o básico para não ficar para trás

Atualizado: Jun 2


Quantas vezes já ouvimos aquela frase: "Na minha maquina funciona.", ou também "Na minha maquina estou com a versão 15, é diferente da sua." ? Quem nunca se deparou com estas frases, ou gastou horas para levar todo o ambiente de desenvolvimento para um ambiente de produção, fazer todas as configurações e instalações dos sistemas ?


Neste artigo vamos ver uma solução para estes problemas. Com o Docker é possível criar ambientes inteiros de desenvolvimento e produção para softwares, BI, criar imagens. Pois o Docker permite que você separe seus aplicativos de sua infraestrutura. Ou seja, permite rodar uma aplicação em um ambiente isolado chamado contêiner.


A utilização do Docker e o uso dos contêineres é sua utilização em larga escala em ambientes de desenvolvimento, teste e produção.


O uso dos contêiner são leves, pois não o contêiner utiliza somente o processo a qual está em execução, as bibliotecas, os binários, o kernel ele utiliza da máquina hospedeira, diferente de uma VM por exemplo, que é necessário instalação de um sistema operacional.


Com o Docker podemos criar ambientes inteiros de desenvolvimento e ao invés de preparar ambientes, e maquinas com todo os aplicativos, e recursos a serem utilizados, podemos baixar o contêiner com suas respectivas imagens e o ambiente estará pronto, além do mais o mesmo contêiner pode-se fazer uso em ambientes de produção.


Uma outra vantagem é a uniformização das versões e suas infraestruturas do ambiente a qual a equipe estará utilizando.



Alguns conceitos que são comumente usados são:


  • Docker Host - É a máquina onde foi instalado o Docker. Sendo uma máquina Linux, o próprio kernel da máquina será compartilhado entre os contêineres criados;

  • Imagens - É um arquivo imutável e inerte que é essencialmente um snapshot de um contêiner;

  • Contêiner - São instâncias de imagens que compartilha bibliotecas e recursos do Docker Host, é aqui onde as aplicações residirão.


Comando básicos do Docker


O Docker possui uma lista de comandos, abaixo podemos ver alguns destes comandos:

  • docker search - (parâmetro) Este comando podemos procurar uma imagem.

  • docker pull - (parâmetro) Quando encontrarmos a imagem que precisamos, utilizamos o docker pull para baixar para nosso host.

  • docker ps - Para listar os dados dos contêineres que estão em execução.

  • docker inspect - (id da imagem ou contêiner) Caso precise de mais detalhes sobre a imagem ou seu contêiner, este comando retornará um Json com todas as informações relacionadas a nossa busca.

  • docker rmi - (nome da imagem) Para remover, deletar uma imagem.

  • docker exec - (id_contêiner ou nome do contêiner) Com o exec podemos executar qualquer comando nos nossos contêineres sem precisarmos estar em seu console.

  • docker start - (id_contêiner) Para dar a execução a um contêiner.

  • docker stop - (id_contêiner) Para matar, parar um contêiner que esteja no ar.


Imaginemos que um time vá desenvolver um DW consumindo os dados do source, e que o DW seja preciso a implementação em um outro banco de dados, e neste desenvolvimento seja necessário um software com front-end e back-end, agendamentos com Jenkins e a utilização do PDI.


Então para cada integrante deste time será necessário instalar os mesmos aplicativos, com as mesmas versões, a configuração do banco de dados source e target para que todos estejam na mesma página.


Vendo o cenário, é aonde encontramos a solução com o Docker. Podemos Dockerizar todo o ambiente e não é necessário a instalação de todos os programas para cada integrante do time, todos podem ter o contêiner de desenvolvimento e fazer atualizações das imagens, assim todos os integrantes podem baixar as imagens atualizadas e todos terem a infraestrutura pronta e as mesmas versões. Tendo um docker-compose para orquestrar as imagens e criar um network entre elas para que todas as imagens funcionem adequadamente.


Desta forma teremos os bancos de dados, sem ter que instalar banco de dados em nossos sistemas operacionais por não serem os mesmo de nossos clientes, teremos o PDI com a mesma versão que o cliente estará utilizando, deixando de lado a necessidade de termos 3, 4 versões de PDI por ter que cada hora ter de lidar clientes diferentes e versões diferentes.

Podemos subir e descer os contêiner a hora que precisarmos.


O Docker da estes poderes ao time, integridade, sincronização e agilidade.

Uma vez o projeto concluído, pode-se então pegar a versão final do contêiner possuindo todas as imagens atualizadas e fazer o deploy do projeto, não sendo assim necessário a instalação de todos os aplicativos no cliente, uma vez o docker instalado podemos baixar esta imagem e subir o contêiner. A mesma coisa acontece em uma atualização do projeto, é só fazer a atualização da imagem e subir o contêiner e o ambiente já estará em produção um vez que as configurações dos dados sensíveis estejam configuradas de forma adequada.


Docker também pode agilizar os processos de integração de novos integrantes ao times, ou até mesmo aquisição de novos computadores, formatações. A imagem pode ser baixada e o ambiente de trabalho já esta pronto para sua utilização.


Os contêineres oferecem os benefícios de portabilidade, agilidade, escalabilidade, controle e isolamento em todo o fluxo de trabalho do ciclo de vida do aplicativo. O benefício mais importante é o isolamento de ambiente fornecido entre Desenvolvimento e Operações.



Jefferson Mendonça

Desenvolvedor

Linkedin MentorsTec

64 visualizações1 comentário