Docker – Conceitos

O Docker é uma plataforma de containers de software líder mundial no segmento, o Docker foi criado por uma empresa chamada dotCloud, e hoje tornou-se uma ferramenta essencial devido a sua agilidade, performance, e robustez. O Docker veio para acabar com os problemas de “Ná minha máquina funciona”, quando desenvolvedores trabalhando em conjunto na hora de testar suas aplicações se deparam com muitos problemas de incompatibilidade, o Docker permite empacotar uma aplicação com todas as suas dependências em uma unidade padronizada para desenvolvimento de um software.

A ideia do Docker é possibilar a construção de aplicações, sejam baseadas em Web, compiladas ou não, escritas em PHP, Python, Java etc, em contêineres para que possam que esses mesmos containers possam trafegar em qualquer rede e rodar em qualquer servidor host que tenha o Docker instalado. A ideia inclusive inspirou seu logotipo:

Os LXC (Linux Containers) existem desde o kernel 2.6.26, que foi distribuído a partir de julho de 2008, porém, só nos últimos anos vem se popularizando graças principalmente ao Docker, que, por meio da sua arquitetura baseada em API, a utilização de imagens em camadas (técnica de copy-on-write), o repositório público de imagens, e todo o ecossistema em volta evoluiu e simplificou o gerenciamento desses contêineres Linux.

Os containeres Linux são como os sistemas operacionais guest, mas eles compartilham recursos como o kernel do sistema operacional host e rodam dentro de Cgroups (um recurso do kernel do Linux responsável por isolar a utilização de recursos como rede, memória, disco), portanto possuem PID único no host e são isolados por namespaces.

O grande trunfo do LXC é muito facilitado no Docker é que conseguimos criar namespaces para processos, para rede, para o hostname, para usuário, para montagem de sistema de arquivos e para comunicação entre usuário, para montagem de sistema de arquivos e para comunicação entre processos, e isolando esses recursos com os cgroups, conseguimos criar um contexto que dentro dele temos praticamente tudo que um sistema operacional precisa para rodar.

Vantagens
  • Padroniza ambientes de desenvolvimento, teste e produção;
  • Melhora a utilização de recursos físicos da infraestrutura;
  • Limita memória e CPU de maneira mais simples, já que podemos designar o limite de memória e utilização de CPU do contêiner no comando de execução;
  • Como iniciamos só o processo e não a pilha toda do sistema operacional sua inicialização é instantânea.
Arquitetura do Docker


Fonte: https://docs.docker.com/engine/article-img/architecture.svg

O Docker está disponível nas seguintes variantes:

  • Docker Enterprise Edition (Docker EE);
  • Docker Community Edition (Docker CE);

O Docker Enterprise Edition (Docker EE) foi desenvolvido para para nível enterprise, para equipes de TI que desenvolvem aplicações em produção em larga escala. O Docker EE é integrado, certificado e feito para suportar altas demandas com o mais segura plataforma de contêineres para a indústria desenvolver todas as suas aplicações com grande agilidade.

Para mais informaçoes sobre o Docker EE: https://www.docker.com/enterprise-edition.

O Docker Community Edition (Docker CE) é ideal para desenvolvedores e pequenas empresas que querem se aventurar e testar suas aplicações em containeres.

O Docker CE está disponível para várias plataformas, desde desktop até cloud. O Docker CE está disponível para MacOS, Windows e disponibiliza uma experiência mais pura para o aprimoramento em Docker, permitindo construir e compartilhar contêineres para ambientes simples.

Para mais informações sobre o Docer CE: https://www.docker.com/community-edition

Referências:
https://www.docker.com
https://www.redhat.com/pt-br/containers/whats-a-linux-container