3.1 Docker Engine
Docker Engine — é o "motor" do Docker, ou seja, o software principal que permite o funcionamento dos containers. Esse motor fornece uma plataforma para desenvolvimento, entrega e execução de aplicações em containers isolados. Docker Engine contém vários componentes principais que garantem a funcionalidade completa do Docker.
O Docker Engine inclui três partes principais:
- Docker Daemon: processo de servidor. Ele executa as operações principais com containers.
- Docker API: interface que permite interagir com o Docker Daemon por meio de chamadas programáticas.
- Docker CLI: linha de comando — interface para trabalhar com o Docker.
O Papel do Docker Engine:
Docker Engine gerencia o ciclo de vida dos containers, desde a criação e inicialização até a remoção. Ele garante a isolação dos containers, permitindo executar vários containers no mesmo host sem conflitos. Docker Engine permite executar aplicações complexas e microsserviços em containers, facilitando o desenvolvimento, teste e implantação
.
Evolução do Docker Engine
Desde o seu surgimento, o Docker Engine passou por muitas versões e melhorias. Cada atualização trouxe novas funcionalidades e melhorias de desempenho. Por exemplo, foram adicionadas capacidades de orquestração de containers, como o Docker Swarm, que permitem gerenciar clusters de containers e automatizar a implantação de aplicações.
3.2 Docker Daemon
Docker Daemon — é o processo principal do servidor que executa todas as operações do Docker. Ele roda em segundo plano e é responsável por gerenciar os containers, imagens, redes e outros recursos do Docker.
Funções do Docker Daemon:
- Criação e gerenciamento de containers: O Docker Daemon processa solicitações para criar, iniciar, parar e remover containers. Ele garante o isolamento dos containers e distribui recursos entre eles.
- Trabalho com imagens: O Docker Daemon faz o download e armazena as imagens de containers que são usadas para criar containers. Ele também gerencia o cache de imagens para otimizar o uso do espaço em disco.
- Gerenciamento de rede: O Docker Daemon cria e gerencia as redes Docker, que permitem que os containers interajam entre si e com sistemas externos. Ele suporta diferentes drivers de rede e configurações para garantir flexibilidade e segurança.
- Gerenciamento de armazenamento: O Docker Daemon gerencia volumes e outros tipos de armazenamento usados pelos containers para guardar dados. Ele garante uma administração confiável e eficiente dos dados dentro dos containers.
Arquitetura do Docker Daemon
Docker Daemon usa uma arquitetura cliente-servidor. O cliente (CLI ou API) envia comandos para o Docker Daemon, que os processa e executa. O Daemon funciona em sistemas operacionais como Linux, MacOS ou Windows.
Papel na segurança:
O Docker Daemon desempenha um papel crucial na garantia da segurança dos containers. Ele gerencia permissões de acesso, configurações de rede e isolamento dos containers, o que ajuda a limitar ameaças potenciais e vulnerabilidades. Usando namespaces (tecnologia de isolamento de processos e recursos) e cgroups (mecanismo de gerenciamento de recursos), o Docker Daemon isola processos e controla o uso de recursos pelos containers, garantindo sua operação segura.
3.3 Docker API
Docker API — é uma interface de programação que desenvolvedores e sysadmins usam pra gerenciar o Docker via código. Funciona no estilo RESTful (Representational State Transfer) — um jeito arquitetural onde as interações acontecem por meio de requisições HTTP padrão, como GET, POST e DELETE. Isso facilita a automação de tarefas relacionadas aos containers e a integração do Docker com outros sistemas e ferramentas.
Funções do Docker API:
- Gerenciamento de containers: O Docker API permite criar, iniciar, parar e apagar containers, além de acessar infos sobre o status deles e visualizar os logs.
- Trabalhar com imagens: Com o API dá pra baixar, criar, excluir e gerenciar as imagens dos containers.
- Operações de rede: O API suporta criar e gerenciar redes Docker, incluindo conectar e desconectar containers das redes.
- Gerenciar armazenamento: O API oferece funções pra gerenciar volumes e outros tipos de armazenamento que os containers usam pra guardar dados.
Usando o Docker API:
O Docker API pode ser usado com diferentes linguagens de programação e ferramentas de automação, tipo Python, Go, Java e outras. Isso permite criar scripts e apps pra automatizar processos de desenvolvimento, testes e deploy de apps em containers.
Exemplos de uso do Docker API:
- CI/CD: Automatizar o processo de integração contínua e deploy, onde qualquer alteração no código automaticamente cria um novo container e testa ele.
- Monitoramento e log: integração com sistemas de monitoramento e log pra acompanhar o estado dos containers e analisar o desempenho deles.
- Orquestração: gerenciamento de clusters de containers com o Docker Swarm ou Kubernetes, usando o Docker API pra interactuar com os nodes e containers individuais.
3.4 Docker CLI
Docker CLI (Command Line Interface) — é a interface de linha de comando que permite aos usuários interagir com o Docker Daemon e realizar várias operações com containers. O Docker CLI oferece um jeito prático e bem intuitivo de gerenciar o Docker pelo terminal.
Comandos principais do Docker CLI:
O Docker CLI suporta um monte de comandos que possibilitam realizar todas as operações importantes com containers, imagens, redes e volumes. Alguns desses comandos incluem:
- docker run: cria e executa um novo container baseado em uma imagem.
- docker build: cria uma nova imagem usando um Dockerfile.
- docker pull: baixa uma imagem do Docker Hub ou outro registro de repositório.
- docker push: faz o upload de uma imagem local para o repositório.
- docker ps: lista os containers em execução.
- docker stop: para um container em execução.
- docker rm: remove um container parado.
- docker network: gerencia redes do Docker.
Características do Docker CLI:
- Facilidade de uso: O Docker CLI foi feito pra ser super intuitivo e fácil de usar. Os comandos têm uma estrutura simples e lógica, o que facilita pra galera que tá começando agora.
- Scripts e automação: O Docker CLI permite criar scripts pra automatizar tarefas relacionadas a containers. Isso deixa mais prático o gerenciamento de grandes clusters de containers e possibilita integrar o Docker a outras ferramentas e sistemas.
- Extensibilidade: O Docker CLI suporta plugins, que permitem estender sua funcionalidade e adicionar novos comandos. Isso faz do Docker CLI uma ferramenta flexível e adaptável pra diferentes necessidades e cenários.
Interação entre os componentes:
O Docker CLI interage com o Docker Daemon através da Docker API. Quando o usuário digita um comando no Docker CLI, ele é enviado pro Docker Daemon, que processa as ações e devolve os resultados no CLI. Essa interação permite um jeito poderoso e flexível de gerenciar containers e recursos do Docker.
Exemplos de uso do Docker CLI:
- Desenvolvimento: os devs podem usar o Docker CLI pra criar rapidamente ambientes de desenvolvimento e teste isolados, facilitando mudar entre diferentes versões de bibliotecas e frameworks.
- Deploy: os sysadmins podem usar o Docker CLI pra automatizar o deploy de aplicações em servidores e em ambientes de nuvem, garantindo estabilidade e previsibilidade no processo.
- Debug e monitoramento: com o Docker CLI dá pra acessar facilmente os logs dos containers, checar o status deles e fazer debug das aplicações.

Docker Engine, Docker Daemon, Docker API e Docker CLI — esses são os componentes chave que fazem o Docker funcionar e possibilitam o gerenciamento de containers no ecossistema Docker. O Docker Engine é o núcleo do sistema, que inclui o Docker Daemon e o Docker API. O Docker Daemon cuida de todas as operações de criação e gerenciamento de containers, a Docker API oferece uma interface programável pra interagir com o Daemon, e o Docker CLI é a interface prática pra executar os comandos variados.
GO TO FULL VERSION