Instalando Docker e rodando seu primeiro container

1. Pré-requisitos e preparação do ambiente

Antes de instalar o Docker, é fundamental verificar se seu sistema atende aos requisitos mínimos. O Docker Engine funciona nativamente em distribuições Linux com kernel versão 3.10 ou superior. Para verificar sua distribuição e versão do kernel, execute:

cat /etc/os-release
uname -r

Caso você tenha versões antigas do Docker instaladas (como docker.io, docker-engine ou docker-ce de repositórios não oficiais), remova-as antes de prosseguir:

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

Em seguida, atualize os pacotes do sistema e instale as dependências necessárias para adicionar o repositório oficial do Docker:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

Essas ferramentas são essenciais: ca-certificates gerencia certificados SSL, curl permite baixar arquivos da web, gnupg lida com chaves de criptografia e lsb-release identifica a versão da distribuição.

2. Instalação do Docker Engine

Com as dependências instaladas, adicione a chave GPG oficial do Docker e configure o repositório:

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

Atualize novamente a lista de pacotes e instale os componentes principais do Docker:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Os pacotes instalados são: docker-ce (Docker Engine), docker-ce-cli (interface de linha de comando) e containerd.io (runtime de containers). Após a instalação, verifique se tudo ocorreu corretamente:

docker --version

A saída deve mostrar algo como Docker version 24.0.7, build afdd53b.

3. Configurações pós-instalação

Para que o Docker inicie automaticamente com o sistema e funcione corretamente, habilite e inicie o serviço:

sudo systemctl start docker
sudo systemctl enable docker

Por padrão, o Docker requer privilégios de superusuário. Para executar comandos Docker sem sudo, adicione seu usuário ao grupo docker:

sudo usermod -aG docker $USER

Após executar esse comando, faça logout e login novamente (ou reinicie a sessão) para que as alterações tenham efeito. Teste a instalação com o container clássico de verificação:

docker run hello-world

Se tudo estiver correto, você verá uma mensagem de boas-vindas do Docker confirmando que a instalação funcionou.

4. Comandos essenciais do Docker

Dominar os comandos básicos é crucial para trabalhar com Docker. Vamos explorar os mais importantes:

Gerenciando imagens

docker images                    # Lista imagens baixadas
docker pull nginx                # Baixa a imagem do Nginx
docker pull ubuntu:22.04         # Baixa versão específica do Ubuntu
docker rmi nginx                 # Remove uma imagem

Gerenciando containers

docker ps                        # Lista containers em execução
docker ps -a                     # Lista todos os containers (incluindo parados)
docker run nginx                 # Cria e inicia um container
docker run -d nginx              # Executa em background (detached)
docker stop container_id         # Para um container
docker start container_id        # Inicia um container parado
docker rm container_id           # Remove um container

Logs e inspeção

docker logs container_id         # Exibe logs do container
docker inspect container_id      # Informações detalhadas do container
docker exec -it container_id bash # Acessa o terminal do container

5. Rodando seu primeiro container: Nginx

Vamos colocar a mão na massa com um exemplo prático: rodar um servidor web Nginx. Primeiro, baixe a imagem oficial:

docker pull nginx

Agora, execute o container em modo detached (background) mapeando a porta 80 do host para a porta 80 do container:

docker run -d -p 80:80 --name meu-nginx nginx

O parâmetro -d executa em background, -p 80:80 faz o mapeamento de portas e --name dá um nome amigável ao container. Para verificar se o servidor está rodando:

docker ps

Acesse http://localhost no navegador ou use curl:

curl localhost

Você verá a página padrão do Nginx. Para parar e remover o container:

docker stop meu-nginx
docker rm meu-nginx

6. Trabalhando com containers em primeiro plano

Nem sempre queremos executar containers em background. O modo interativo permite explorar e modificar o ambiente interno. Execute um container Ubuntu com bash:

docker run -it ubuntu bash

Os parâmetros -it combinam -i (modo interativo) e -t (aloca um terminal). Dentro do container, você pode explorar o sistema de arquivos e instalar pacotes:

root@abc123:/# cat /etc/os-release
root@abc123:/# apt-get update
root@abc123:/# apt-get install vim -y
root@abc123:/# exit

Diferença entre -it e -d:

  • -it (interativo): Mantém o terminal aberto, permitindo comandos em tempo real. Ideal para debugging e desenvolvimento.
  • -d (detached): Executa em background, liberando o terminal. Ideal para serviços em produção.

Ao sair do container interativo com exit, ele será parado automaticamente. Para mantê-lo rodando em background após usar -it, pressione Ctrl+P seguido de Ctrl+Q.

7. Boas práticas e próximos passos

Limpando recursos não utilizados

Com o tempo, containers parados e imagens não utilizadas acumulam espaço. Use o comando de limpeza:

docker system prune -a

Esse comando remove todos os containers parados, imagens não utilizadas e redes órfãs. Adicione -f para forçar sem confirmação.

Introdução ao Docker Compose

Para ambientes multi-container (como uma aplicação web com banco de dados), o Docker Compose simplifica a configuração. Exemplo básico de docker-compose.yml:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: exemplo

Execute com docker-compose up -d.

Preparação para o próximo artigo

No próximo artigo, aprenderemos a escrever nosso primeiro Dockerfile. Com ele, você poderá criar imagens personalizadas para suas aplicações, definindo exatamente o ambiente de execução, dependências e configurações necessárias.


O Docker revolucionou a forma como desenvolvemos, testamos e implantamos aplicações. Com a instalação concluída e os primeiros containers rodando, você já tem a base para explorar todo o ecossistema de containers e orquestração com Kubernetes.

Referências