Terminologia do Docker

Gorjeta

Este conteúdo é um trecho do eBook, .NET Microservices Architecture for Containerized .NET Applications, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Esta seção lista termos e definições com os quais você deve estar familiarizado antes de se aprofundar no Docker. Para mais definições, consulte o extenso glossário fornecido pelo Docker.

Imagem de contêiner: um pacote com todas as dependências e informações necessárias para criar um contêiner. Uma imagem inclui todas as dependências (como estruturas) mais a configuração de implantação e execução a ser usada por um tempo de execução de contêiner. Normalmente, uma imagem deriva de várias imagens base que são camadas empilhadas umas sobre as outras para formar o sistema de arquivos do contêiner. Uma imagem é imutável depois de criada.

Dockerfile: um arquivo de texto que contém instruções para criar uma imagem do Docker. É como um script em lote, a primeira linha indica a imagem base para começar e, em seguida, siga as instruções para instalar os programas necessários, copiar arquivos e assim por diante, até obter o ambiente de trabalho de que precisa.

Build: A ação de construir uma imagem de contêiner com base nas informações e no contexto fornecidos por seu Dockerfile, além de arquivos adicionais na pasta onde a imagem é construída. Você pode criar imagens com o seguinte comando do Docker:

docker build

Container: uma instância de uma imagem do Docker. Um contêiner representa a execução de um único aplicativo, processo ou serviço. Ele consiste no conteúdo de uma imagem do Docker, um ambiente de execução e um conjunto padrão de instruções. Ao dimensionar um serviço, você cria várias instâncias de um contêiner a partir da mesma imagem. Ou um trabalho em lote pode criar vários contêineres a partir da mesma imagem, passando parâmetros diferentes para cada instância.

Volumes: Ofereça um sistema de arquivos gravável que o contêiner possa usar. Como as imagens são somente leitura, mas a maioria dos programas precisa gravar no sistema de arquivos, os volumes adicionam uma camada gravável, sobre a imagem do contêiner, para que os programas tenham acesso a um sistema de arquivos gravável. O programa não sabe que está acessando um sistema de arquivos em camadas, é apenas o sistema de arquivos como de costume. Os volumes vivem no sistema host e são gerenciados pelo Docker.

Tag: uma marca ou rótulo que você pode aplicar a imagens para que diferentes imagens ou versões da mesma imagem (dependendo do número da versão ou do ambiente de destino) possam ser identificadas.

Multi-stage Build: É um recurso, desde o Docker 17.05 ou superior, que ajuda a reduzir o tamanho das imagens finais. Por exemplo, uma imagem base grande, contendo o SDK, pode ser usada para compilar e publicar e, em seguida, uma pequena imagem base somente em tempo de execução pode ser usada para hospedar o aplicativo.

Repositório (repo): uma coleção de imagens relacionadas do Docker, rotuladas com uma tag que indica a versão da imagem. Alguns repositórios contêm várias variantes de uma imagem específica, como uma imagem contendo SDKs (mais pesado), uma imagem contendo apenas tempos de execução (mais leve), etc. Essas variantes podem ser marcadas com tags. Um único repositório pode conter variantes de plataforma, como uma imagem do Linux e uma imagem do Windows.

Registro: um serviço que fornece acesso a repositórios. O registro padrão para a maioria das imagens públicas é o Docker Hub (de propriedade do Docker como uma organização). Um registro geralmente contém repositórios de várias equipes. As empresas geralmente têm registros privados para armazenar e gerenciar imagens que criaram. O Azure Container Registry é outro exemplo.

Imagem multi-arch: Para multi-arquitetura (ou multiplataforma), é um recurso do Docker que simplifica a seleção da imagem apropriada, de acordo com a plataforma onde o Docker está sendo executado. Por exemplo, quando um Dockerfile solicita uma imagem base FROM mcr.microsoft.com/dotnet/sdk:8.0 do registro, ele realmente obtém 8.0-nanoserver-ltsc2022, 8.0-nanoserver-1809 ou 8.0-bullseye-slim, dependendo do sistema operacional e da versão em que o Docker está sendo executado.

Docker Hub: Um registro público para carregar imagens e trabalhar com elas. O Docker Hub fornece hospedagem de imagens do Docker, registros públicos ou privados, gatilhos de compilação e ganchos da Web e integração com GitHub e Bitbucket.

Registro de Contêiner do Azure: um recurso público para trabalhar com imagens do Docker e seus componentes no Azure. Isso fornece um registro que está perto de suas implantações no Azure e que lhe dá controle sobre o acesso, tornando possível usar seus grupos e permissões do Azure Ative Directory.

Registro Confiável do Docker (DTR): um serviço de registro do Docker (do Docker) que pode ser instalado no local para que permaneça no datacenter e na rede da organização. É conveniente para imagens privadas que devem ser gerenciadas dentro da empresa. O Registro Confiável do Docker está incluído como parte do produto Docker Datacenter.

Docker Desktop: Ferramentas de desenvolvimento para Windows e macOS para criar, executar e testar contêineres localmente. O Docker Desktop for Windows fornece ambientes de desenvolvimento para contêineres Linux e Windows. O host Linux Docker no Windows é baseado em uma máquina virtual Hyper-V . O host para Contêineres do Windows é baseado diretamente no Windows. O Docker Desktop para Mac é baseado na estrutura do Apple Hypervisor e no hipervisor xhyve, que fornece uma máquina virtual host Linux Docker no macOS. O Docker Desktop para Windows e Mac substitui o Docker Toolbox, que era baseado no Oracle VirtualBox.

Compose: Uma ferramenta de linha de comando e formato de arquivo YAML com metadados para definir e executar aplicativos de vários contêineres. Você define um único aplicativo com base em várias imagens com um ou mais arquivos .yml que podem substituir valores dependendo do ambiente. Depois de criar as definições, você pode implantar todo o aplicativo de vários contêineres com um único comando (docker-compose up) que cria um contêiner por imagem no host do Docker.

Cluster: uma coleção de hosts do Docker expostos como se fosse um único host virtual do Docker, para que o aplicativo possa ser dimensionado para várias instâncias dos serviços espalhados por vários hosts dentro do cluster. Os clusters do Docker podem ser criados com Kubernetes, Azure Service Fabric, Docker Swarm e Mesosphere DC/OS.

Orchestrator: Uma ferramenta que simplifica o gerenciamento de clusters e hosts Docker. Os orquestradores permitem que você gerencie suas imagens, contêineres e hosts por meio de uma interface de linha de comando (CLI) ou uma interface gráfica do usuário. Você pode gerenciar redes de contêineres, configurações, balanceamento de carga, descoberta de serviços, alta disponibilidade, configuração de host do Docker e muito mais. Um orquestrador é responsável por executar, distribuir, dimensionar e recuperar cargas de trabalho em uma coleção de nós. Normalmente, os produtos orchestrator são os mesmos produtos que fornecem infraestrutura de cluster, como Kubernetes e Azure Service Fabric, entre outras ofertas no mercado.