Como alguns aqui já devem saber, o Docker é uma plataforma que disponibiliza diversos serviços baseados em containers. Como esses pacotes integram softwares, bibliotecas, arquivos de configuração e outras coisas relacionadas, é comum surgirem dúvidas sobre os aspectos e diferenças entre esses serviços, as suas funções e aplicabilidades.
Docker Host
O Docker Host é um dos principais serviços da plataforma, sendo o ponto central de criação e gerenciamento de containers. Como o host é o servidor que faz tudo funcionar, ele contém integrações como o cache e o registro de imagens dos sistemas que nós trabalhamos.
Docker CLI
Quando você está no seu terminal e começa a executar comandos como “docker run”, “docker exec”, “docker rmi” ou qualquer coisa desse tipo, essa é a sua interação com a interface de comandos (Command Line Interface) como um cliente desse serviço.
Então qualquer comando que você escreve com o Docker CLI é executado pelo Docker Host.
Docker Compose
Executar funções no Docker também pode exigir que as nossas aplicações utilizem mais de um container, então às vezes é necessário criar bancos de dados, com cache, Redis, etc.
Gerenciar todas essas funções pode ser muito trabalhoso, já que para rodar o Docker é necessário ajustar as portas, as variáveis de ambiente, o framework que ele vai utilizar e os volumes. E como tudo isso deve ser feito para cada container que estiver trabalhando em conjunto com a sua aplicação, isso é claramente uma tarefa muito complexa e improdutiva.
Pensando em resolver esse problema o Docker Compose é uma solução multi-container que utiliza um arquivo declarativo para definir os serviços que você quer rodar, sendo que cada serviço é basicamente um container que você pode executar.
Através desse arquivo declarativo é possível executar as nossas aplicações com base em determinados containers, compartilhamento de volume, redes, bancos de dados feitos na imagem que ele vai baixar para rodar, expor as portas, etc.
Swarm Mode
Depois de algumas versões, o Docker Compose também integra uma ferramenta chamada Docker Swarm e pode ativar o Swarm Mode, um modo onde é possível subir, orquestrar e gerenciar ainda mais containers para trabalharmos com stacks, etc.
Em resumo, essas são as diferenças entre Docker Host, Docker CLI e Docker Compose.
O Docker Host é o servidor que faz tudo funcionar.
O Docker CLI é utilizado para executar múltiplos comandos no Host.
O Docker Compose serve para gerenciar múltiplos containers.