Entendendo o Docker parte 1

Standard

O que é Docker?

De forma bem resumida podemos dizer que é uma plataforma aberta criada com objetivo de facilitar o desenvolvimento, implantação e execução de aplicações em ambientes isolados. Ela foi desenhada especialmente para disponibilizar sua aplicação da forma mais rápida possível.

Usando o Docker você pode gerenciar facilmente a infraestrutura da sua aplicação, ou seja, isso agilizará o processo de criação, manutenção e modificação do ambiente completo do seu serviço. O melhor é que tudo isso pode ser feito sem a necessidade de qualquer acesso privilegiado a sua infraestrutura corporativa. A equipe responsável pela aplicação poderá participar da especificação do ambiente, onde nesse caso eles devem fornecer um determinado arquivo com a descrição dessa solução, que conterá a informação de como a aplicação será disposta nesse espaço, em qual porta fornecerá seu serviço, quais dados de volumes externos serão requisitados e outras possíveis necessidades.

O docker disponibiliza uma nuvem publica para compartilhamento dos ambientes prontos, que podem ser utilizados para viabilizar customizações especificas para situações pessoais, ou seja, é possível obter um ambiente pronto do apache e configurar os módulos específicos que precisa dele e assim criar seu próprio ambiente customizado. Tudo isso com poucas linhas de configuração.

O Docker utiliza o modelo de container para “empacotar” sua aplicação, que após ser transformada em uma imagem docker, poderá ser reproduzida em qualquer porte de plataforma, ou seja, caso sua aplicação funcione sem falhas em seu notebook, ela funcionará também no servidor ou no mainframe.

Os containers são isolados a nível de disco, memória, processamento e rede. Essa separação permite uma grande flexibilidade, onde ambientes distintos podem coexistir no mesmo host, sem causar qualquer problema. Vale salientar que o overhead nesse processo é o mínimo necessário, pois cada container normalmente carrega apenas um processo, que é aquele responsável pela entrega do serviço desejado, em todo caso esse container também contém todos os arquivos necessários (configuração, biblioteca e afins) para sua execução completamente isolada.

Outra coisa interessante no docker é sua velocidade para viabilizar o ambiente desejado, pois como é basicamente o inicio de um processo e não um sistema operacional inteiro, o tempo de disponibilização é normalmente medido em segundos.

Virtualização a nível do sistema operacional

O modelo de isolamento utilizado no Docker é a virtualização a nível do sistema operacional, que é um método de virtualização onde o kernel do sistema operacional permite que múltiplos processos sejam executados isoladamente no mesmo host. Esses processos isolados em execução são denominados no Docker de container.

Para criar o isolamento necessário desse processo, o Docker usa a funcionalidade do Kernel denominada namespaces, que cria ambientes isolados entre containers, ou seja, os processos em execução de um container não terão acesso aos recursos de outros containers, a não ser que isso seja expressamente liberado em configuração de cada ambiente.

Para evitar a exaustão dos recursos da máquina por apenas um ambiente isolado, o Docker usa a funcionalidade cgroups do kernel, que é responsável por criar limites de uso do hardware a disposição. Com isso é possível coexistir no mesmo host diferentes containers, sem que um afete diretamente o outro por uso exagerado dos recursos compartilhados.

Na próxima parte dessa série de artigos sobre Docker falaremos de sistema de arquivos, camadas e muitas outras coisas interessantes.