Instalando Docker Engine no Linux

Linux  

Tutorial baseado em Install Docker Engine on Debian e Install Docker Engine on Ubuntu.


1. Desinstalando Versões Antigas


Caso tenha versões antigas do Docker Engine instaladas, é bom removê-las antes de começar. Para isso execute o comando abaixo:

sudo apt remove docker docker-engine docker.io containerd runc -y

Caso não tenha versões antigas o apt vai relatar que nenhum desses pacotes está instalado.

O conteúdo de /var/lib/docker/, incluindo imagens, containers, volumes e redes, é preservado. O pacote do Docker Engine agora é denominado docker-ce.


2. Configurando o Repositório


Execute os comandos abaixo para permitir que o apt use um repositório sobre HTTPS:

sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y

Adicione a chave GPG oficial do Docker

Para o Debian:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Para o Ubuntu:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Use o seguinte comando para configurar o repositório estável:

Para o Debian:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Para o Ubuntu:

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

Como adicionamos um repositório, vamos atualizar as informações do banco de dados de pacotes:

sudo apt update


3. Instalando Docker Engine


Execute os comandos abaixo para instalar os pacotes do Docker Engine:

sudo apt install docker-ce docker-ce-cli containerd.io -y


4. Alterando Rede Padrão


Este é um passo opcional. Por padrão o docker utiliza a rede 172.16.0.0/12, que pode já estar sendo utilizada por outros serviços.

Para alterar a rede do docker basta criar o arquivo daemon.json, no diretório /etc/docker/, com as novas configurações de rede, um exemplo seria:

{
  "bip": "10.220.0.1/16",
  "mtu": 1500
}

Para aplicar a alteração reinicie o docker com o comando abaixo:

sudo systemctl restart docker

Lembrando que o docker permite muitas outras configurações de rede.


5. Configurando Proxy da Rede


Este é um passo opcional, só faça se estiver utilizando um proxy no ambiente Linux.

Se você estiver usando um proxy vai precisa configurar as variáveis de ambiente HTTP_PROXY e HTTPS_PROXY.

Existem algumas maneiras de executar isso, vamos fazer através do systemd.

Primeiro crie o diretório docker.service.d com o comando abaixo:

sudo mkdir -p /etc/systemd/system/docker.service.d

Crie dentro deste diretório o arquivo http-proxy.conf contendo as informações abaixo. Substitua proxy.example.com:80 e proxy.example.com:443 com as informações do seu servidor proxy:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"

Recomendo sempre configurar ambas as variáveis, caso não possua um proxy diferenciado para o HTTPS_PROXY use o mesmo valor do HTTP_PROXY.

Em seguida, basta aplicar as alterações e reiniciar o docker com os comandos:

sudo systemctl daemon-reload

sudo systemctl restart docker


6. Verificando a Instalação


Agora já podemos verificar se o Docker Engine está instalado corretamente.

Para isso vamos executar a imagem hello-world com o comando abaixo:

sudo docker run hello-world

Este comando baixa uma imagem de teste e a executa em um container. Quando o container é executado, ele imprime uma mensagem e sai.

Se tudo estiver correto, ao executar a imagem hello-world você vai ter uma saída como da figura abaixo:

Imagem Hello-World do Docker Engine


7. Gerenciar o Docker como um Usuário Não Root


Se você não quiser usar o docker com sudo, basta adicionar usuários ao grupo docker.

Adicionando o usuário atual ao grupo docker:

sudo usermod -aG docker $USER

Execute o comando a seguir para ativar as mudanças no grupo:

newgrp docker

Verifique se você pode executar comandos docker sem sudo com a imagem hello-world:

docker run hello-world

Se tiver erros de permissões referente ao diretório ~/.docker/, execute os comandos abaixo:

sudo chown "$USER":"$USER" /home/"$USER"/.docker -R

sudo chmod g+rwx "$HOME/.docker" -R


8. Desinstalando o Docker Engine


Desinstale os pacotes Docker Engine, CLI e Containerd:

sudo apt purge docker-ce docker-ce-cli containerd.io -y

Imagens, containers, volumes ou arquivos de configuração customizados em seu host não são removidos automaticamente.

Para excluir todas as imagens, containers e volumes:

sudo rm -rf /var/lib/docker

sudo rm -rf /var/lib/containerd