O que é o Docker?

Concluído

Antes de começarmos nosso tour rápido 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.

O processo de desenvolvimento e gerenciamento de aplicativos em sua empresa normalmente inclui uma ou mais equipes. Há uma equipe de desenvolvimento que cria o software e uma equipe de operações responsável por implantar esses aplicativos. A equipe de operações também é responsável por gerenciar a infraestrutura de hospedagem de aplicativos.

Por exemplo, suponha que estejamos desenvolvendo um portal de acompanhamento de pedidos que será usado pelas várias lojas de nossa empresa. Vários ambientes hospedam nossos aplicativos durante o processo de desenvolvimento e publicação do aplicativo. Primeiro, a equipe de desenvolvimento desenvolve e testa o software em um ambiente de desenvolvimento. Daqui, o software é então implantado em um ambiente de QA (garantia de qualidade), seguido por pré-produção e um ambiente de produção final.

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

  • Gerenciar ambientes de hospedagem

    Todos os diferentes ambientes exigem o gerenciamento de software e hardware. Precisamos garantir que o software instalado e o hardware configurado em cada um deles sejam os mesmos. Também precisamos configurar aspectos como acesso à rede, armazenamento de dados e segurança por ambiente de maneira consistente e facilmente reproduzível.

  • Continuidade na entrega de software

    A implantação de aplicativos em nossos ambientes deve acontecer de forma consistente. Cada pacote de implantação precisa incluir todos os pacotes do sistema, binários, bibliotecas, arquivos de configuração e outros itens que garantem um aplicativo totalmente funcional. Também precisamos garantir que todas essas dependências sejam correspondentes às versões e à arquitetura de software.

  • Uso eficiente de hardware

    Cada aplicativo implantado precisa ser executado de modo que seja isolado de outros aplicativos em execução no mesmo hardware. Nosso objetivo é executar mais de um aplicativo por servidor para fazer o melhor uso dos recursos sem comprometer uns aos outros.

  • Portabilidade do aplicativo

    Há várias razões pelas quais a portabilidade do aplicativo é essencial. Um ambiente de hospedagem pode falhar ou talvez precisamos expandir nosso aplicativo. Em ambos os casos, o resultado potencial é a reimplantação do nosso software em um novo ambiente. Desejaremos mover o software de um host para outro, mesmo se a infraestrutura subjacente for diferente. Essa movimentação precisa ocorrer o mais rápido possível, a fim de reduzir o tempo de inatividade para nossos clientes.

Antes de examinarmos os recursos do Docker que ajudam a resolver esses desafios, discutiremos alguns conceitos e examinaremos uma breve visão geral da arquitetura do Docker.

O que é um contêiner?

Um contêiner é um ambiente livremente isolado que nos permite criar e executar pacotes de software. Esses pacotes de software incluem o código e todas as dependências para executar aplicativos de maneira rápida e confiável em qualquer ambiente de computação. Chamamos esses pacotes de imagens de contêiner.

A imagem de contêiner se torna a unidade que usamos para distribuir nossos aplicativos.

O que é o transporte em contêineres de software?

O transporte em contêineres de software é um método de virtualização do sistema operacional usado para implantar e executar contêineres sem usar uma VM (máquina virtual). 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 transporte em contêineres usada para desenvolver, enviar e executar contêineres. O Docker não usa um hipervisor, e você poderá executar o Docker na área de trabalho ou no laptop se estiver desenvolvendo e testando aplicativos. A versão de desktop do Docker dá suporte ao Linux, ao Windows e ao macOS. Quanto aos sistemas de produção, o Docker está disponível para ambientes de servidor, incluindo diversas variantes do Linux e do Microsoft Windows Server 2016 e superior. Muitas nuvens, incluindo o Azure, dão suporte ao Docker.

Arquitetura do Docker

A plataforma do Docker consiste em vários componentes que usamos para criar, executar e gerenciar nossos aplicativos em contêineres.

Mecanismo do Docker

O Mecanismo do Docker consiste em vários componentes configurados como uma implementação de cliente-servidor, em que o cliente e o servidor são executados simultaneamente no mesmo host. O cliente se comunica com o servidor usando uma API REST, que habilita o cliente a se comunicar também com uma instância do servidor remoto.

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

Algumas setas mostram a comunicação entre o servidor do Docker, os contêineres em execução e as imagens de contêiner armazenadas. Essas setas indicam como o servidor do Docker carrega as imagens de contêiner armazenadas e gerencia os contêineres em execução.

O cliente do Docker

Há duas alternativas para o cliente do Docker: um aplicativo de linha de comando chamado docker ou um aplicativo baseado em GUI (interface gráfica do usuário) chamado Docker Desktop. A CLI e o Docker Desktop interagem com um servidor do Docker. Os comandos docker 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 primária que usamos para gerenciar os contêineres.

O servidor do Docker

O servidor do Docker é um daemon chamado dockerd. O daemon dockerd responde às solicitações do cliente por meio da API REST do Docker e pode interagir com outros daemons. O servidor do Docker também é responsável por acompanhar o ciclo de vida de nossos contêineres.

Objetos do Docker

Há vários objetos que você criará e configurará para dar suporte às implantações de contêiner. Isso inclui redes, volumes de armazenamento, plug-ins e outros objetos de serviço. Não abordaremos todos esses objetos aqui, mas é bom ter em mente que esses objetos são itens que podemos criar e implantar conforme necessário.

Docker Hub

O Docker Hub é um registro de contêiner de SaaS (software como serviço) do Docker. Os registros do Docker são repositórios que usamos para armazenar e distribuir as imagens de contêiner que criamos. O Docker Hub é o registro público padrão usado pelo Docker para o gerenciamento de imagens.

Tenha em mente que você pode criar e usar um registro do Docker privado ou usar uma das várias opções de provedor de nuvem disponíveis. Por exemplo, você pode usar o Registro de Contêiner do Azure para armazenar imagens de contêineres a fim de usá-los em vários serviços habilitados para contêiner do Azure.