O que é Docker
Histórico

Desde a sua criação, em 2013, o Docker se popularizou como uma solução para criar, executar e gerenciar containers. Uma das razões para a preferência pelo Docker é o fato de que ele não só simplificou o uso dos containers, mas também introduziu o seu fornecimento através da nuvem.

Como Funciona

As primeiras versões do Docker utilizavam a tecnologia LXC do Linux como uma interface para o seus containers. O LXC é um método de virtualização em nível de sistema operacional que permite a execução de mais de um sistema Linux, usando o mesmo kernel. Isso acontece por causa de duas funcionalidades chamadas cgroups e namespaces, os cgroups distribuem e isolam o uso dos recursos entre processos e o isolamento de namespaces permite a separação desses processos em grupos. Isso faz com que aplicações sejam executadas isoladamente sem que seja necessário que cada elemento virtual tenha todo o sistema operacional, como no caso das máquinas virtuais.
Desde a versão 0.9, o Docker passou a incluir a biblioteca libcontainer, uma interface que possibilita a padronização para a criação de containers. Essa inclusão tornou o Docker independente do LXC como interface e, consequentemente, permitiu sua compatibilidade com outros sistemas operacionais.

Arquitetura do Docker

O LXC pode ser visto como uma máquina virtual leve. Essa tecnologia usa um sistema init, que gerencia vários processos, o que permite a execução de aplicações inteiras. Já o Docker encoraja a fragmentação da aplicação em processos separados.
Um dos conceitos mais importantes no Docker é o de imagem, um conjunto de sistemas de arquivos em camadas. Essas camadas são read only, quando uma delas precisa ser modificada, é feita uma cópia que se torna a camada superior, a única write and read. À medida que novas alterações são feitas, sejam elas resultado de configurações realizadas pelo cliente ou da execução de aplicações, novas imagens são criadas. É nessa última camada que os containers são instanciados.

Esses containers não suportam múltiplas aplicações e também não armazenam dados, que são transferidos para o host ou containers dedicados. Esse é um dos motivos pelos quais a abordagem do Docker é popular entre os que adotam práticas de DevOps, como microsserviços, implantação e integração contínuas (em inglês, Continuous deploy e Continuous integration).

Benefícios

Abaixo, alguns benefícios proporcionados pela abordagem do Docker.

Controle de versões

As alterações feitas nas camadas são registradas por changelogs, o que permite o controle sobre as imagens do container. Da mesma forma, é possível reverter essas alterações e retornar para versões anteriores.

Portabilidade

Uma aplicação implantada dentro de um container independe da versão do sistema operacional em que será executada. Assim, o container pode ser transferido para outra máquina host, que tenha o Docker instalado, sem que hajam problemas de compatibilidade.

Rapidez na inicialização e implantação

Os containers do Docker são leves, incluindo somente os requisitos de runtime importantes para a execução da aplicação. Além disso, muitas imagens do Docker já estão prontas e disponibilizadas no Docker Hub, o que torna a implantação mais rápida.

Aplicações

O Docker é uma ferramenta muito usada entre aqueles que adotam práticas de DevOps. Um dos principais objetivos dessa metodologia é entregar aplicações de qualidade mais rapidamente através de uma série de práticas e da integração entre as equipes de desenvolvimento e operação. Os containers do Docker proporcionam um ambiente isolado, onde a aplicação pode ser testada e implantada, sem que os desenvolvedores precisem se preocupar com a sua compatibilidade com o sistema operacional, por exemplo. Ao mesmo tempo, isso facilita o trabalho da equipe de operação, que pode replicar o ambiente onde a aplicação foi testada pelo desenvolvedor no ambiente de produção, sem se preocupar com suas diferenças.
O Docker também pode ser usado em microsserviços. Essa é uma arquitetura que consiste na fragmentação de aplicações em projetos menores, que são executados como serviços. Cada processo funciona em um container diferente e se comunica com os demais através de protocolos simples. Além disso, O Docker pode ser incorporado na maioria das aplicações para DevOps.

Embora existam outras, o Docker é a ferramenta mais usada para criação, execução e gerenciamento de containers. Ela apresenta vantagens para empresas e pode ser integrada à diversas aplicações e serviços. O Docker também possui um repositório, chamado de Docker Registry, onde é possível armazenar e distribuir imagens.

Entre em Contato

Se quiser saber mais detalhes sobre a utilização de containers e Docker, entre em contato e converse diretamente com nossos especialistas: