O que é e como funciona o Docker CE (2020)

Com o Docker CE você pode gerenciar sua infraestrutura da mesma maneira que gerencia seus aplicativos.

Docker CE é uma plataforma aberta para desenvolvimento, envio e execução de aplicativos baseado em containers. Além disso permite que você separe seus aplicativos da sua infraestrutura para poder entregar o software rapidamente.

Com o Docker CE você pode gerenciar sua infraestrutura da mesma maneira que gerencia seus aplicativos.

Ao tirar proveito das metodologias do Docker para enviar, testar e implantar códigos rapidamente, você pode reduzir significativamente o atraso entre escrever um código e executá-lo na produção.

A plataforma Docker CE

De certa forma, o Docker é um pouco como uma máquina virtual. Mas, diferentemente de uma máquina virtual, em vez de criar um sistema operacional virtual inteiro, o Docker permite que os aplicativos usem o mesmo kernel Linux que o sistema em que estão executando e requer apenas que os aplicativos sejam enviados com coisas que ainda não estão em execução no computador host.

O desenvolvimento de aplicativos hoje exige muito mais do que escrever código e isso proporciona um aumento significativo no desempenho e reduz o tamanho do aplicativo.

O Docker CE simplifica e acelera seu fluxo de trabalho, dando aos desenvolvedores a liberdade de inovar com suas opções de ferramentas, pilhas de aplicativos e ambientes de implantação para cada projeto.

Além disso a plataforma fornece a capacidade de empacotar e executar um aplicativo em um ambiente pouco isolado chamado container.

O isolamento e a segurança permitem executar muitos containers simultaneamente em um determinado host. Os containers são leves porque não precisam da carga extra de um hipervisor, mas são executados diretamente no kernel da máquina host.

Isso significa que você pode executar mais containers em uma determinada combinação de hardware do que se estivesse usando máquinas virtuais.

Faça o Download do Docker CE Desktop

Você pode fazer o download do Docker Desktop para Windows, Mac e Linux para desenvolver containers. Além disso você pode ainda instalar o Engine em VPSMáquinas Virtuais e Bare Metal.

O Ciclo de Vida do Container

Você pode até executar containers Docker em máquinas host que são realmente máquinas virtuais como as do Digital Ocean e a Vultr. O Docker fornece ferramentas e uma plataforma para gerenciar o ciclo de vida de seus contêineres:

  • Desenvolva seu aplicativo e seus componentes de suporte usando containers;
  • container se torna a unidade para distribuir e testar seu aplicativo;
  • Quando estiver pronto, implante seu aplicativo em seu ambiente de produção, como um container ou um serviço orquestrado.

Isso funciona da mesma maneira, independentemente de seu ambiente de produção ser um data center local, um provedor de nuvem ou um híbrido dos dois. É o fim daquela frase “Na minha máquina funciona”.

Entendendo o Docker Engine

O Docker Engine é um aplicativo cliente-servidor com esses componentes principais:

  • Um servidor que é um tipo de programa de longa duração chamado processo daemon (o comando dockerd).
  • Uma API REST que especifica interfaces que os programas podem usar para conversar com o daemon e instruir o que fazer.
  • Um cliente da interface da linha de comandos (CLI) (o comando docker).
Entendendo o Docker Engine

O comando docker usa a API REST do Docker para controlar ou interagir com o daemon do Docker CE por meio de scripts ou comandos diretos da CLI. Muitos outros aplicativos Docker como o Portainer usam a API e a CLI subjacentes. O daemon cria e gerencia objetos do Docker, como imagens, containers, redes e volumes.

Como posso usar o Docker CE?

O Docker CE otimiza o ciclo de vida do desenvolvimento, permitindo que os desenvolvedores trabalhem em ambientes padronizados usando contêineres locais que fornecem seus aplicativos e serviços.

Os containers são ótimos para fluxos de trabalho de integração contínua e entrega contínua (CI / CD). Considere o seguinte cenário de exemplo:

  • Os desenvolvedores escrevem código localmente e compartilham seu trabalho com seus colegas usando containers do Docker.
  • Eles usam o Docker para enviar seus aplicativos para um ambiente de teste e executar testes manuais e automatizados.
  • Quando os desenvolvedores encontram bugs, eles podem corrigi-los no ambiente de desenvolvimento e reimplantá-los no ambiente de teste para teste e validação.
  • Quando o teste é concluído, obter a correção para o cliente é tão simples quanto enviar a imagem atualizada para o ambiente de produção.

Implantação e dimensionamento responsivos

A plataforma baseada em contêiner do Docker permite cargas de trabalho altamente portáteis.

Os contêineres do Docker podem ser executados no laptop local de um desenvolvedor, em máquinas físicas ou virtuais em um data center, em provedores de nuvem ou em uma mistura de ambientes.

A portabilidade e a natureza leve do Docker também facilitam o gerenciamento dinâmico das cargas de trabalho, aumentando ou diminuindo os aplicativos e serviços conforme as necessidades da empresa, quase em tempo real.

O Docker é leve e rápido. Ele fornece uma alternativa viável e econômica às máquinas virtuais baseadas em hipervisor, para que você possa usar mais sua capacidade de computação para atingir seus objetivos de negócios.

O Docker CE é perfeito para ambientes de alta densidade e para implantações pequenas e médias nas quais você precisa fazer mais com menos recursos.

A arquitetura do Docker CE

O Docker usa uma arquitetura cliente-servidor. O cliente Docker conversa com o daemon Docker, que realiza o trabalho pesado de construir, executar e distribuir seus containers.

O cliente e o daemon do Docker podem ser executados no mesmo sistema ou você pode conectar um cliente do Docker a um daemon do Docker remoto.

O cliente e daemon do Docker se comunicam usando uma API REST, sobre soquetes UNIX ou uma interface de rede. Veja o esquema da API:

O cliente e o daemon do Docker podem ser executados no mesmo sistema ou você pode conectar um cliente do Docker a um daemon do Docker remoto.

Vou descrever cada um dos componentes que fazem parte da Arquitetura do Docker:

O daemon Docker

O daemon do Docker (dockerd) escuta solicitações da API do Docker e gerencia objetos do Docker, como imagens, contêineres, redes e volumes.

Um daemon também pode se comunicar com outros daemons para gerenciar os serviços do Docker.

O cliente Docker

O cliente do Docker (docker) é a principal maneira pela qual muitos usuários do Docker interagem com o Docker.

Quando você usa comandos como docker run, o cliente envia esses comandos para o dockerd, que os executa. O comando docker usa a API do Docker e o cliente Docker pode se comunicar com mais de um daemon.

Registros do Docker (registries)

Um registro do Docker armazena imagens do Docker. O Docker Hub é um registro público que qualquer pessoa pode usar, e o Docker está configurado para procurar imagens no Docker Hub por padrão.

Você pode até executar seu próprio registro privado. Se você usa o Docker Datacenter (DDC), ele inclui o Docker Trusted Registry (DTR).

Quando você usa os comandos pull docker ou docker run, as imagens necessárias são extraídas do registro configurado. Quando você usa o comando docker push, sua imagem é enviada para o registro configurado.

Componentes do Docker CE

Ao usar o Docker, você está criando e usando imagens, contêineres, redes, volumes, plug-ins e outros objetos. Esta seção é uma breve visão geral de alguns desses objetos.

Docker Images

Uma imagem é um modelo somente leitura com instruções para criar um contêiner do Docker. Muitas vezes, uma imagem é baseada em outra imagem, com alguma personalização adicional.

Por exemplo, você pode criar uma imagem baseada na imagem do ubuntu, e instala o servidor da web Apache e seu aplicativo, bem como os detalhes de configuração necessários para executar o aplicativo.

Você pode criar suas próprias imagens ou usar apenas aquelas criadas por outras pessoas e publicadas em um registro.

Para criar sua própria imagem, crie um Dockerfile com uma sintaxe simples para definir as etapas necessárias para criar a imagem e executá-la. Cada instrução em um arquivo Dockerfile cria uma camada na imagem.

Quando você altera o Dockerfile e reconstrói a imagem, apenas as camadas que foram alteradas são reconstruídas. Isso faz parte do que torna as imagens tão leves, pequenas e rápidas, quando comparadas a outras tecnologias de virtualização.

Docker Containers

Um contêiner é uma instância executável de uma imagem. Você pode criar, iniciar, parar, mover ou excluir um contêiner usando a API ou a CLI do Docker.

Você pode conectar um contêiner a uma ou mais redes, anexar armazenamento a ele ou até criar uma nova imagem com base em seu estado atual.

Por padrão, um contêiner é relativamente bem isolado de outros contêineres e sua máquina host.

Você pode controlar o quão isolada a rede, o armazenamento ou outros subsistemas subjacentes de um contêiner estão de outros contêineres ou da máquina host.

Um contêiner é definido por sua imagem, bem como pelas opções de configuração que você fornece quando o cria ou inicia. Quando um contêiner é removido, quaisquer alterações em seu estado que não sejam armazenadas no armazenamento persistente desaparecem.

O comando a seguir executa um contêiner do ubuntu, anexa interativamente à sua sessão de linha de comando local e executa / bin / bash.

$ docker run -i -t ubuntu /bin/bash

Quando você executa esse comando, acontece o seguinte (supondo que você esteja usando a configuração do registro padrão):

  1. Se você não possui a imagem do ubuntu localmente, o Docker a extrai do registro configurado, como se você tivesse executado o docker pull ubuntu manualmente.
  2. O Docker cria um novo container, como se você tivesse executado um comando de container do docker manualmente.
  3. O Docker aloca um sistema de arquivos de leitura e gravação no container, como sua camada final. Isso permite que um container em execução crie ou modifique arquivos e diretórios em seu sistema de arquivos local.
  4. O Docker cria uma interface de rede para conectar o container à rede padrão, pois você não especificou nenhuma opção de rede. Isso inclui atribuir um endereço IP ao container. Por padrão, os contêineres podem se conectar a redes externas usando a conexão de rede da máquina host.
  5. O Docker inicia o container e executa /bin/bash. Como o container está executando interativamente e conectado ao seu terminal (devido aos sinalizadores -i e -t), você pode fornecer entrada usando o teclado enquanto a saída é registrada no terminal.
  6. Quando você digita exit para finalizar o comando /bin/bash, o contêiner para, mas não é removido. Você pode iniciá-lo novamente ou removê-lo.

Docker Services

Os serviços permitem escalar contêineres em vários daemons do Docker, que funcionam juntos como um enxame com vários gerentes e trabalhadores.

Cada membro de um enxame é um daemon do Docker e todos os daemons se comunicam usando a API do Docker. Um serviço permite definir o estado desejado, como o número de réplicas do serviço que devem estar disponíveis a qualquer momento.

Por padrão, o serviço é balanceado por carga em todos os nós do trabalhador. Para o consumidor, o serviço Docker parece ser um único aplicativo.

O Docker Engine oferece suporte ao modo enxame no Docker 1.12 e superior.

Luiz Eduardo Oliveira Fonseca

Infra @ Powertic, Rails Developer, Maintainer do Mautic Docker e do Saelos Docker, Revisor da Tradução do Mautic, Administrador da Comunidade Mautic Brasil

Deixe uma resposta