Infraestrutura ti

Docker: o que é, por que utilizar?

Docker é um gerenciador de contêineres que possibilita a criação e replicação dos contêineres em vários ambientes de desenvolvimentos distintos. Com ele é possível padronizar todos os ambientes de desenvolvimento e aplicação do sistema, seja a máquina local onde o desenvolvedor está programando, ou o servidor onde é feito o deploy para testes. Graças a cultura DevOps a popularidade do Docker tem aumentado entre os desenvolvedores e empresas de tecnologia, pois ao utilizar Docker a equipe de desenvolvimento e a equipe de infraestrutura estarão trabalhando no mesmo ambiente, com as mesmas configurações, facilitando a comunicação entre eles.

DevOps é uma cultura que tem como objetivos aumentar a velocidade e a qualidade da entrega de valor, reduzir o tempo em que as aplicações ficam fora do ar e melhorar a integração entre a equipe de desenvolvimento e a equipe de infraestrutura que faz os deploys e a manutenção das aplicações.

MAS AFINAL, O QUE É O DOCKER?

Docker é uma tecnologia, é uma solução ou até mesmo é uma plataforma open source, que visa a criação, a manutenção, a entrega e a execução de containers.

Certo, mas o que é um container? Container é um ambiente isolado para a execução de aplicações e serviços. O container vai executar sobre o seu sistema operacional (SO) usando os recursos existentes na máquina em que está sendo executado. Você pode executar até mesmo um outro SO, ou seja você pode estar executando um container ubuntu em uma máquina Debian, ou você pode executar um serviço tipo Node, PHP, Mysql, ou o container pode ser uma aplicação completa rodando todos os itens anteriores.

Basicamente, com o Docker é possível “virtualizar” um outro sistema na sua máquina. Porém com uma grande diferença, o Docker não é uma máquina virtual, logo ele não virtualiza um sistema na prática. Ele utiliza o kernel do sistema operacional da sua máquina e em cima dele executa os containers Docker, gerando uma economia enorme de disco e memória.

Essa economia acontece porque na virtualização é criado um novo sistema operacional em cima do sistema já em execução. A virtualização aloca parte da memória e do disco do sistema exclusivamente para a aplicação que será virtualizada, não sendo possível compartilhar com outras aplicações do sistema.

Como o docker não faz essa alocação de memória e de disco é possível ter várias imagens, sendo elas de sistemas operacionais diferentes, ou de versões diferentes de uma mesma biblioteca, todas rodando simultâneas sem que uma interfira na outra, e sem demandar muito recurso da sua máquina local.

CONFIRA ALGUMAS VANTAGENS DO DOCKER

Ambientes simultâneos e padronizados

Uma grande vantagem quando se fala de containers é poder replicá-los onde e quando quiser. Ou seja, você pode criar uma imagem Docker com a configuração necessária para executar a aplicação web que você está desenvolvendo, essa imagem você vai utilizar tanto no seu ambiente de desenvolvimento, como no seu servidor de testes, no servidor de produção, e pode até mesmo enviar para um outro desenvolvedor que venha a fazer parte do projeto. Ou seja, todo lugar que o seu projeto estiver sendo executado, vai estar sendo executado com a mesma versão de bibliotecas, com as mesmas configurações de sistema, você vai ter o mesmo ambiente para todos.

Mais velocidade ao criar um novo ambiente

Seguindo na ideia de replicar o container, você vai ganhar em velocidade quando for criar um novo ambiente (seja trocar de servidor ou adicionar um novo membro à equipe de desenvolvimento), pois tudo que você precisa é instalar a imagem docker do seu sistema, pois nela terá todas as configurações necessárias. Isso também evita problemas de desenvolvimento referentes a versões diferentes de uma biblioteca em ambiente de desenvolvimento e de produção, pois às vezes você está rodando o PHP 8 no seu servidor, porém o seu programador está usando a versão 7.4 do PHP.

Confira o Manual do Dev sobre Docker no Fireplay

Em resumo,  a ascensão da cultura DevOps aumentou e muito o uso de containers, não só no ambiente de produção, mas também no ambiente de desenvolvimento, para que toda a cadeia de desenvolvimento esteja usando as mesmas configurações de ambiente, ou seja, nós desenvolvedores precisamos saber o que é e como manipular ao menos o básico desta tecnologia.

CONHEÇA O REDATOR DESTE CONTEÚDO

Olá, galera! Meu nome é Leonardo, tenho 23 anos e sou formado em Engenharia de Computação pela Universidade Estadual de Ponta Grossa. Sou nascido e criado na zona rural do município de Sengés, mas mesmo estando longe dos grandes centros sempre fui apaixonado pela tecnologia e por tudo o que ela pode fazer por nós, seja otimizar processos, melhorar a qualidade de vida ou proporcionar novas experiências que sem ela seria impossível ou muito difícil. Trabalho com desenvolvimento web a cerca de 5 anos, e hoje, atuo como desenvolvedor full-stack na Firework.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *