DEV Community

Celso Nery
Celso Nery

Posted on

Instalando o Docker no Debian

🇺🇸 English version here

Instalando o Docker no Debian

Antes de rodar qualquer container — seja para uma aplicação isolada, seja como pré-requisito para um cluster Kubernetes — é preciso ter o Docker Engine instalado e configurado corretamente no servidor. Este artigo cobre a instalação completa no Debian, do zero até o primeiro container rodando.

Use sudo antes dos comandos abaixo caso esteja executando como usuário comum (não como root).

Atualizando o sistema

Antes de instalar qualquer pacote novo, atualize a lista de pacotes e o sistema:

# apt update
# apt upgrade
Enter fullscreen mode Exit fullscreen mode

Instalando pacotes necessários

Alguns pacotes são pré-requisitos para adicionar repositórios externos com segurança (chaves GPG, HTTPS, etc.):

# apt install curl gnupg2 apt-transport-https software-properties-common ca-certificates
Enter fullscreen mode Exit fullscreen mode

Adicionando o repositório do Docker

Baixe e registre a chave GPG oficial do Docker:

# curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
Enter fullscreen mode Exit fullscreen mode

Crie o arquivo de repositório em /etc/apt/sources.list.d/docker.list:

deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/docker.gpg] https://download.docker.com/linux/debian bookworm stable
Enter fullscreen mode Exit fullscreen mode

⚠️ Atenção à versão do Debian: o nome (bookworm, no exemplo) precisa corresponder à versão do seu Debian — bookworm é o Debian 12, bullseye é o Debian 11, buster é o Debian 10. Para descobrir qual é o codinome da sua instalação, rode:

$ lsb_release -cs

E substitua bookworm pelo valor retornado, caso esteja usando uma versão diferente.

Container runtime: Docker ou containerd?

Se o objetivo final é montar um cluster Kubernetes, vale uma pausa aqui: o Kubernetes não usa o Docker diretamente como runtime desde a versão 1.24 — ele depende do containerd (que, inclusive, já vem junto com a instalação do Docker Engine, mas também pode ser instalado isoladamente). Se esse for o seu caso, siga direto para o artigo de instalação do Kubernetes, que cobre a instalação do containerd especificamente para esse cenário.

Se o objetivo é usar o Docker Engine completo (para rodar containers isolados, Docker Compose, etc.), continue com os passos abaixo.

Instalando o Docker

# apt update
# apt install docker-ce
Enter fullscreen mode Exit fullscreen mode

Se você tiver problemas ao executar containers com a versão mais recente, é possível instalar uma versão anterior conhecida por ser estável, como a 18.06.0:

# apt install docker-ce=18.06.0~ce~3-0~debian

Configurando o daemon

Crie o arquivo /etc/docker/daemon.json com as seguintes configurações:

{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m"
        },
    "storage-driver": "overlay2"
}
Enter fullscreen mode Exit fullscreen mode

Essa configuração:

  • Usa o systemd como cgroup driver (importante para manter consistência com outros serviços gerenciados por systemd no sistema, incluindo o próprio Kubernetes, caso você venha a instalá-lo depois);
  • Limita o tamanho dos logs de cada container a 100MB, evitando que containers "barulhentos" encham o disco com logs;
  • Usa o driver de armazenamento overlay2, recomendado atualmente para a maioria dos casos.

Crie o diretório de override do serviço systemd do Docker:

# mkdir -p /etc/systemd/system/docker.service.d
Enter fullscreen mode Exit fullscreen mode

Recarregue e reinicie o serviço:

systemctl daemon-reload
systemctl restart docker
Enter fullscreen mode Exit fullscreen mode

Permitindo uso do Docker por um usuário comum

Por padrão, comandos do Docker exigem privilégios de root. Para permitir que um usuário comum rode containers sem precisar de sudo em todo comando, adicione-o ao grupo docker:

# usermod -aG docker $USER
Enter fullscreen mode Exit fullscreen mode

É necessário fazer logout e login novamente (ou reiniciar a sessão) para que a mudança de grupo tenha efeito.

Verificando a instalação

Confirme que o Docker está instalado e funcionando:

$ docker version
Enter fullscreen mode Exit fullscreen mode

A saída deve ser parecida com:

Client:
 Version:           18.06.0-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        0ffa825
 Built:             Wed Jul 18 19:09:33 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.0-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       0ffa825
  Built:            Wed Jul 18 19:07:38 2018
  OS/Arch:          linux/amd64
  Experimental:     false
Enter fullscreen mode Exit fullscreen mode

A versão exibida vai variar conforme a versão instalada no seu sistema — o exemplo acima reflete a versão 18.06.0.

Rodando o primeiro container

O teste clássico, usando a imagem oficial de exemplo do Docker:

$ docker run hello-world
Enter fullscreen mode Exit fullscreen mode

Ou, para um teste um pouco mais tangível, subindo um servidor web Apache (httpd) na porta 80:

$ docker run --rm -p 80:80 httpd
Enter fullscreen mode Exit fullscreen mode

Para confirmar que funcionou, acesse pelo navegador o IP da máquina host:

http://127.0.0.1
Enter fullscreen mode Exit fullscreen mode

Se a página padrão do Apache aparecer, a instalação do Docker está completa e funcionando corretamente.

Considerações finais

Com o Docker instalado, configurado com o cgroup driver correto e testado com sucesso, o servidor já está pronto tanto para rodar containers isolados no dia a dia quanto para servir de base para instalações mais avançadas — como o próprio Kubernetes, que reaproveita o containerd já presente nessa instalação.

Top comments (0)