Aluizio Developer

Primeiros Passos Com Docker

Conceitos básicos sobre Docker e processo de instalação nos principais sistemas operacionais.

Aluizio Developer

O que é Docker?

O Docker é uma plataforma para o desenvolvedor e/ou administrador de sistemas: criar, executar e compartilhar aplicativos em containers. O uso de containers para implantar aplicativos é chamado de conteinerização.

O docker foi feito para rodar no Linux. Logo, o melhor comportamento você encontrará rodando no Linux, apesar de poder instalar e usar tanto em Windows quanto em macOS.

O container é:

  • Flexível: Até as aplicações mais complexas podem ser containers.

  • Leve: os containers aproveitam e compartilham o kernel do host, tornando-os muito mais eficientes em termos de recursos do sistema do que as máquinas virtuais.

  • Portátil: você pode criar localmente, implantar na nuvem e executar em qualquer lugar.

  • Acoplamento fraco: os containers são altamente auto-suficientes e encapsulados, permitindo substituir ou atualizar um sem atrapalhar outros.

  • Escalável: você pode aumentar e distribuir automaticamente réplicas de containers.

  • Seguro: os containers aplicam restrições e isolamentos agressivos aos processos sem nenhuma configuração necessária da parte do usuário.

Imagens e Containers

Fundamentalmente, um container não passa de um processo em execução, com alguns recursos adicionais de encapsulamento aplicados a ele para mantê-lo isolado do host e de outros containers.

Um dos aspectos mais importantes desse isolamento é que cada container interage com seu próprio sistema de arquivos privado; esse sistema de arquivos é fornecido por uma imagem do Docker.

Uma imagem inclui tudo que é necessário para executar um aplicativo - o código ou binário, dependências e quaisquer outros objetos necessários.

Acesse o Docker Hub para mais detalhes sobre imagens docker.

Containers e Máquinas Virtuais

Um container é executado nativamente no Linux e compartilha o kernel da máquina host com outros containers.

Por outro lado, uma máquina virtual (VM) executa um sistema operacional "convidado" completo com acesso virtual a recursos de host por meio de um hipervisor.

Containers vs VMs

Imagem retirada de: http://imesh.github.io/images/contvsvm.png

Baixar e Instalar o Docker

Na sequência deste post descrevo um passo-a-passo da instalação do Docker no Linux Ubuntu e no WSL com Windows 10/11.

Instalando o Docker no Windows 10/11 com WSL

A vantagem de instalar o Docker Engine (nativo) no WSL é que basta você seguir o processo de instalação do Docker na própria distribuição Linux. Ou seja, seguiremos a mesma sequência de instalação para o Ubuntu.

  1. Remover versões antigas:
sudo apt update && sudo apt upgrade



sudo apt remove docker docker-engine docker.io containerd runc
  1. Atualizar a lista de pacotes apt e instalar os pacotes para permitir o uso de um repositório em HTTPS:
sudo apt update


sudo apt install ca-certificates curl gnupg lsb-release


sudo mkdir -p /etc/apt/keyrings


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


sudo apt update

Caso receba um erro ao atualizar a lista de pacotes, execute o comando a seguir para corrigir o problema: sudo chmod a+r /etc/apt/keyrings/docker.gpg. Após, execute novamente a atualização com sudo apt update.

  1. Instalar o Docker Engine:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Configurações de Pós-Instalação

A instalação do Docker cria o grupo denominado docker no sistema, grupo este que possui as devidas permissões para execução dos comandos e processos do Docker.

Com base nisso, precisamos incluir o nosso usuário do WSL nesse grupo. Execute o comando abaixo para adicionar o seu usuário (criado no início da configuração do WSL) no grupo docker:

A variável $USER pegará o usuário atual logado no WSL.

sudo usermod -aG docker $USER

Serviço Docker no WSL

Agora que o Docker já está disponível como um serviço dentro do WSL, precisamos iniciar esse serviço. E para isso, execute o comando a seguir:

sudo service docker start

Esse comando precisará ser executado toda vez que o WSL for carregado.

Para verificar se o serviço do Docker está em execução no WSL, execute:

sudo service docker status

A nova versão do Docker Compose permite executá-lo com o comando docker compose, ao invés de docker-compose.

Se você receber o erro Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? ou similar, execute o comando sudo update-alternatives --config iptables e escolha a opção 1 iptables-legacy. Após, execute novamente o comando sudo service docker start.

Se em algum momento você precisar encerrar o serviço do Docker no WSL, execute:

sudo service docker stop

Instalando Docker no Ubuntu

  1. Remover versões antigas:
sudo apt update && sudo apt upgrade


sudo apt remove docker docker-engine docker.io containerd runc
  1. Atualizar a lista de pacotes apt e instalar os pacotes para permitir o uso de um repositório em HTTPS:
sudo apt update


sudo apt install ca-certificates curl gnupg lsb-release


sudo mkdir -p /etc/apt/keyrings


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


sudo apt update

Caso receba um erro ao atualizar a lista de pacotes, execute o comando a seguir para corrigir o problema: sudo chmod a+r /etc/apt/keyrings/docker.gpg. Após, execute novamente a atualização com sudo apt update.

  1. Instalar o Docker Engine:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

### Verificar a Instalação do Docker

Execute o comando abaixo no seu terminal para verificar se o Docker já está disponível para uso. Esse comando irá baixar a imagem Docker hello-world e executar um container a partir dessa imagem.

``bash sudo docker run hello-world ``

A saída desse comando será:

```bash Hello from Docker!

This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:

  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
  3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

```

### Configurações de Pós-Instalação

A instalação do Docker (considerando o Ubuntu) cria o grupo denominado docker no sistema, grupo este que possui as devidas permissões para execução dos comandos e processos do Docker.

Com base nisso, precisamos incluir o nosso usuário do sistema nesse grupo. Execute o comando abaixo para adicionar o seu usuário no grupo docker:

``bash sudo usermod -aG docker $USER ``

Após rodar o comando, efetue logout e login no sistema para que essa alteração seja reconhecida. Agora o seu usuário possui todas as permissões necessárias para trabalhar com o Docker.

### Serviço Docker

Caso queira que o serviço Docker seja carregado automaticamente no seu PC após o processo de boot do sistema, efetue a configuração abaixo:

``bash sudo systemctl enable docker ``

Se em algum momento quiser desabilitar o carregamento automático do serviço do Docker no processo de boot, execute o seguinte comando:

``bash sudo systemctl disable docker ``

Comandos para trabalhar com o serviço Docker

Verificar o status do serviço:

``bash sudo systemctl status docker.service ``

Parar o serviço:

``bash sudo systemctl stop docker.service ``

Iniciar o serviço:

``bash sudo systemctl start docker.service ``

Reiniciar o serviço:

``bash sudo systemctl restart docker.service ``

Documentação Docker

Para ver mais detalhes sobre instalação acesse a documentação:

Links úteis:

GNU

Linux Ubuntu

Docker

Comentários