O que é o Docker?

Concluído

Antes de começarmos nosso rápido tour pelos contêineres do Docker, vamos dar uma olhada em como nossa equipe desenvolve e implanta aplicativos. Também descreveremos brevemente alguns dos desafios que nossas equipes enfrentam.

Na sua empresa, o processo de programação e gestão de aplicações inclui, normalmente, uma ou mais equipas. Há uma equipe de desenvolvimento que cria o software e uma equipe de operações responsável pela implantação desses aplicativos. A equipe de operações também é responsável por gerenciar a infraestrutura de hospedagem de aplicativos.

Por exemplo, suponha que estamos desenvolvendo um portal de rastreamento de pedidos que os vários pontos de venda da nossa empresa usarão. Vários ambientes hospedam nossos aplicativos durante o processo de desenvolvimento e publicação do aplicativo. Primeiro, a equipa de programação programa e testa o software num ambiente de programação. Depois, o software é implementado num ambiente de controlo da qualidade (CQ), seguido da pré-produção e de um ambiente de produção final.

Há vários desafios que precisaremos considerar no cenário anterior:

  • Gerenciando ambientes de hospedagem

    Os diferentes ambientes exigem todos a gestão tanto do software como do hardware. Temos de garantir que o software instalado e o hardware configurado em cada um deles são os mesmos. Também temos de configurar aspetos como o acesso à rede, o armazenamento dos dados e a segurança, por cada ambiente, de uma forma consistente e facilmente reproduzível.

  • Continuidade na entrega do software

    A implantação de aplicativos em nossos ambientes deve acontecer de forma consistente. Cada pacote de implantação deve incluir todos os pacotes do sistema, binários, bibliotecas, arquivos de configuração e outros itens que garantam um aplicativo totalmente funcional. Também temos de garantir que todas estas dependências correspondem a versões e arquiteturas de software.

  • Uso eficiente de hardware

    Cada aplicação implementada tem de ser executada de forma isolada das outras aplicações em execução no mesmo hardware. Pretendemos executar mais de uma aplicação por servidor para aproveitar os recursos da melhor forma sem os comprometer.

  • Portabilidade das aplicações

    Há várias razões pelas quais a portabilidade das aplicações é essencial. Um ambiente de hospedagem pode falhar ou talvez seja necessário expandir nosso aplicativo. Em ambos os casos, o resultado potencial é a reimplantação do nosso software em um novo ambiente. Queremos mover o software de um sistema anfitrião para outro, mesmo que a infraestrutura subjacente seja diferente. Essa movimentação tem de ocorrer com a maior rapidez possível para reduzir o tempo de inatividade para os nossos clientes.

Antes de examinarmos as funcionalidades do Docker que ajudam a resolver estes desafios, discutiremos alguns conceitos e analisaremos uma breve descrição geral da arquitetura do Docker.

O que é um contentor?

Um contentor é um ambiente relativamente isolado que nos permite compilar e executar pacotes de software. Estes pacotes de software incluem o código e todas as dependências para executar aplicações de forma rápida e fiável em qualquer ambiente de computação. Chamamos a esses pacotes imagens de contentor.

A imagem de contentor torna-se a unidade que utilizamos para distribuir as nossas aplicações.

O que é a contentorização de software?

A conteinerização de software é um método de virtualização de SO usado para implantar e executar contêineres sem usar uma máquina virtual (VM). Os contêineres podem ser executados em hardware físico, na nuvem, em VMs e em vários sistemas operacionais.

O que é o Docker?

O Docker é uma plataforma de contentorização utilizada para desenvolver, enviar e executar contentores. O Docker não utiliza um hipervisor e o utilizador pode executar o Docker no seu computador de secretária ou no seu portátil se estiver a programar e a testar aplicações. A versão do Docker para computador de secretária suporta o Linux, o Windows e o macOS. Para os sistemas de produção, o Docker está disponível para ambientes de servidor, incluindo muitas variantes do Linux e do Microsoft Windows Server 2016 e versões posteriores. Muitas nuvens, incluindo o Azure, suportam o Docker.

Arquitetura do Docker

A plataforma do Docker consiste em vários componentes que utilizamos para compilar, executar e gerir as nossas aplicações em contentores.

Motor do Docker

O motor do Docker consiste em vários componentes configurados como uma implementação cliente/servidor, em que o cliente e o servidor são executados simultaneamente no mesmo sistema anfitrião. O cliente se comunica com o servidor usando uma API REST, que permite que o cliente também se comunique com uma instância de servidor remoto.

Diagram showing a high-level overview of the Docker architecture.

Algumas setas mostram a comunicação entre o Servidor do Docker, Contentores em execução e imagens de contentor armazenadas. Estas setas indicam como o servidor do Docker carrega imagens de contentor armazenadas e gere contentores em execução.

O cliente do Docker

Há duas alternativas para o cliente Docker: um aplicativo de linha de comando chamado ou um aplicativo baseado em Interface Gráfica do Usuário (GUI) chamado docker Docker Desktop. Tanto a CLI quanto o Docker Desktop interagem com um servidor Docker. Os docker comandos da CLI ou do Docker Desktop usam a API REST do Docker para enviar instruções para um servidor local ou remoto e funcionam como a interface principal que usamos para gerenciar nossos contêineres.

O servidor do Docker

O servidor do Docker é um daemon chamado dockerd. O daemon dockerd responde a pedidos do cliente por meio da API REST do Docker e pode interagir com outros daemons. O servidor do Docker também é responsável por controlar o ciclo de vida dos nossos contentores.

Objetos do Docker

Há vários objetos que o utilizador vai criar e configurar para suportar as implementações dos seus contentores. Esses objetos incluem redes, volumes de armazenamento, plug-ins e outros objetos de serviço. Não abordaremos todos estes objetos aqui, mas convém ter em mente que estes objetos são itens que podemos criar e implementar conforme necessário.

Docker Hub

O Docker Hub é um registro de contêiner do Docker Software as a Service (SaaS). Os registos do Docker são repositórios que utilizamos para armazenar e distribuir as imagens de contentor que criamos. O Docker Hub é o registo público predefinido que o Docker utiliza para a gestão de imagens.

Tenha em mente que pode criar e utilizar um registo privado do Docker ou utilizar uma das várias opções de fornecedor de serviços cloud disponíveis. Por exemplo, você pode usar o Registro de Contêiner do Azure para armazenar imagens de contêiner para usar em vários serviços habilitados para contêiner do Azure.