Docker não é o único serviço de contêineres que temos no mundo Linux, mas certamente é o mais popular e toda distribuição atual já possui um método de instalação próprio mas que muitas vezes te entrega uma versão que não é a mais recente. O que segue então é um método rápido e simples para manter a última versão do Docker instalada em praticamente qualquer distribuição Linux.
Aqui no blog eu já escrevi alguns artigos com funcionalidades e exemplos de uso do Docker, mas em todos eu considerei que esta ferramenta já estivesse instalada no sistema. Este então é o método que costumo usar em minhas máquinas para que o ambiente esteja sempre funcional e atualizado.
Baixando e executando o instalador
O procedimento a seguir é o recomendado na documentação oficial do projeto e requer o download e execução de um script instalador que funciona nas principais distribuições Linux.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Uma observação importante: Se você já tiver instalado o Docker por outros meios é recomendável que o desinstale antes para evitar conflito. Veja na documentação oficial os procedimentos para cada distribuição.
Autorizando usuários comuns a executarem o Docker
Tão logo o Docker esteja instalado, somente o usuário root terá permissão para executar seus comandos, o que não é recomendável para o dia-a-dia.
É necessário adicionar o seu usuário (ou qualquer outro que usará o Docker) no grupo “docker” (criado durante a instalação) para poder gerenciar seus conteineres sem precisar usar o “sudo”.
sudo usermod -aG docker $USER
O comando acima adicionará seu usuário a este grupo (“docker”), se precisar que outro usuário tenha permissão, troque o $USER pelo seu login.
Importante: A inclusão/alteração de grupos só ocorrerá após fazer novo login no sistema. Se estiver em uma máquina com ambiente gráfico (seu desktop, por exemplo) será necessário sair do ambiente gráfico também.
Uma forma de contornar este logoff, paliativamente, é usar o comando abaixo que iniciará uma nova sessão dentro do seu terminal onde, somente nele, você já pertencerá ao grupo docker e poderá executar comandos a partir dele.
newgrp docker
Testando a sua nova instalação
Um teste bem trivial para sabermos se a sua instalação foi bem sucedida é verificar se a versão do Docker é retornada corretamente, como no exemplo abaixo.
docker version
Client: Docker Engine - Community
Cloud integration: v1.0.33
Version: 24.0.2
API version: 1.43
Go version: go1.20.4
Git commit: cb74dfc
Built: Thu May 25 21:51:00 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.2
API version: 1.43 (minimum version 1.12)
Go version: go1.20.4
Git commit: 659604f
Built: Thu May 25 21:51:00 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.21
GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc:
Version: 1.1.7
GitCommit: v1.1.7-0-g860f061
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Se você viu uma mensagem como a mostrada acima e sem erros, então o Docker está instalado.
Executando o seu primeiro contêiner
Se preferir um teste mais efetivo, já é possível executar qualquer contêiner na sua máquina.
No exemplo abaixo é feito do download da imagem oficial do Apache2 e iniciado um novo contêiner chamado “meu-apache”
docker run --rm --name meu-apache --publish 8080:80 httpd
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
f03b40093957: Pull complete
abaf8619eb1c: Pull complete
e3fe37d0c2ad: Pull complete
52a1e37affe5: Pull complete
49d8a68fd903: Pull complete
Digest: sha256:1bb3f7669a85713906e695599d29c58ab40d4e6409907946609d92a428e95b49
Status: Downloaded newer image for httpd:latest
[...]
[Tue Jun 20 16:48:12.945862 2023] [core:notice] [pid 1:tid 139735396248896] AH00094: Command line: 'httpd -D FOREGROUND'
Você poderá acessar o endereço http://localhost:8080 a partir do seu navegador e deverá ver uma página padrão dizendo que tudo funcionou.
Para encerrar, basta teclar CTRL-C no terminal onde o comando foi executado.
Para remover a imagem baixada e liberar espaço na sua máquina basta remove-la com o comando a seguir:
docker image rm httpd
Conclusão
Atualmente conhecer o básico para criar e gerenciar contêineres em Docker é o mínimo que se espera, não só de um desenvolvedor que queira embarcar na onda do “Devops”, mas de qualquer administrador Linux e curiosos de plantão que gostem de testar serviços diferentes em sua máquina.
Neste texto eu mostrei apenas o procedimento para instalar o Docker “vanila” (aquele distribuído oficialmente pelo projeto) em sua distribuição Linux, mas como disse, embora haja outros métodos, a vantagem desta instalação é que seu sistema estará sempre com a última versão disponível no projeto.
Vale lembrar ainda que o Docker é somente a “ponta do icebergue” que é o tema contêineres e microsserviços. Para operar um ou dois contêineres independentes ele atende bem, mas se você pretende subir um sistema completo que envolva bases de dados, webservices, cache etc, neste caso você precisará de algo mais. Mas isso ficará para a próxima.
Até lá.