01 de junho de 2020 • 6 min de leitura
Primeiros Passos Com Docker
Conceitos básicos sobre Docker e processo de instalação nos principais sistemas operacionais.
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.
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.
- Remover versões antigas:
sudo apt update && sudo apt upgrade
sudo apt remove docker docker-engine docker.io containerd runc
- 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 comsudo apt update
.
- 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 dedocker-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 comandosudo update-alternatives --config iptables
e escolha a opção 1iptables-legacy
. Após, execute novamente o comandosudo 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
- Remover versões antigas:
sudo apt update && sudo apt upgrade
sudo apt remove docker docker-engine docker.io containerd runc
- 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 comsudo apt update
.
- 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:
- The Docker client contacted the Docker daemon.
- The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
- The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
- 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: