O jeito mais rápido: criar o servidor com a imagem Docker
Se vai criar um servidor novo, o mais rápido é escolher Docker na lista de imagens. Ele começa com Docker Engine e Docker Compose instalados sobre o Ubuntu 24.04 LTS, e você roda docker compose up assim que entra. A apresentação do app e os tamanhos recomendados estão na página VPS Docker.
Para somar Docker a um servidor que já usa, ou se quer usar outro sistema operacional como Debian ou AlmaLinux, instale você mesmo na ordem abaixo. Todos os comandos supõem acesso como root. Se entrou como usuário comum, coloque sudo antes dos comandos.
O que conferir antes de instalar
O Docker roda em servidores de qualquer tamanho. Para projetos pessoais rodando alguns contêineres, o menor plano geral de 12GB é suficiente; para rodar um banco de dados, servidor web e cache juntos, 24GB ou mais oferecem espaço. Se você baixa e compila muitas imagens, um VPS NVMe com disco rápido faz uma diferença perceptível.
Se houver pacotes antigos do Docker do repositório do sistema operacional, remova-os antes para não se misturarem aos pacotes oficiais. Pacotes não instalados são pulados, então pode rodar tal como está.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; doneInstalar Docker no Ubuntu 24.04
Passo 1. Adicionar a chave e o endereço do repositório
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.listPasso 2. Instalar o Docker Engine e o Compose
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginTerminada a instalação, o serviço Docker liga sozinho e também liga junto ao reiniciar o servidor. Os mesmos comandos funcionam tal como estão no Ubuntu 22.04 e 26.04. O nome da versão usado no endereço do repositório é lido automaticamente de /etc/os-release.
Instalar Docker no Debian 13
O Debian segue a mesma ordem do Ubuntu, e só o endereço do repositório muda para linux/debian. No Debian 12 os comandos são os mesmos.
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginInstalar Docker no AlmaLinux 10
O AlmaLinux e o Rocky Linux usam o repositório RHEL do Docker. Para não conflitar com o Podman, que já vem instalado, organize antes e depois instale. No AlmaLinux 9 e no Rocky Linux 9 e 10 os comandos são os mesmos.
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now dockerNa primeira instalação, se perguntar se aceita a chave de assinatura do repositório, digite y. Na família RHEL o serviço não liga sozinho depois da instalação, então com a última linha, systemctl enable --now docker, ligue-o agora e na inicialização.
Conferir a instalação e o primeiro contêiner
Suba uma vez um contêiner de teste com o comando abaixo. Se aparecer a mensagem que começa com Hello from Docker, motor, download de imagens e execução de contêineres funcionam. Com --rm, o contêiner é removido assim que termina.
docker run --rm hello-world
docker compose versionSe quer usar o Docker também com um usuário comum, coloque esse usuário no grupo docker e entre de novo. O grupo docker tem as mesmas permissões que o root, então coloque só usuários de confiança.
usermod -aG docker usernameSubir serviços com Docker Compose
O Compose é a forma de escrever a configuração dos contêineres em um arquivo YAML e subi-los com uma linha. Mesmo ao migrar ou criar um servidor novo, com o mesmo arquivo o mesmo ambiente sobe de novo. Por exemplo, um arquivo que sobe um servidor web Nginx é assim.
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
web:
image: nginx:stable
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
EOF
docker compose up -dAbrindo http://YOUR_SERVER_IP no navegador, aparece a tela do Nginx. Colocando um index.html na pasta html, esse arquivo aparece. Os quatro comandos abaixo bastam para o dia a dia.
docker compose ps: mostra os contêineres em execução e suas portas.docker compose logs -f: acompanha os logs em tempo real. Saia com Ctrl+C.docker compose pull && docker compose up -d: baixa as novas imagens e troca os contêineres pela nova versão.docker compose down: para e remove os contêineres. Os dados guardados nos volumes continuam.
Escrevendo restart: unless-stopped, os contêineres também sobem sozinhos ao reiniciar o servidor. Só os contêineres que você parou continuam parados.
Configuração de firewall e exposição de portas
O Docker coloca direto nas regras de firewall (iptables) as portas publicadas com ports: e as abre. Por isso, mesmo portas não permitidas no ufw ficam acessíveis de fora se estiverem em ports:. Bancos de dados ou painéis de administração que não precisam aparecer de fora ficam acessíveis só de dentro do servidor se você os ligar só a 127.0.0.1, como abaixo.
ports:
- "127.0.0.1:5432:5432"Fica organizado publicar só as portas 80 e 443 nos serviços web e fazer o resto se chamar pelo nome do serviço dentro da mesma rede do Compose. Para o firewall básico de todo o servidor, siga o guia básico de firewall e deixe abertos só SSH, HTTP e HTTPS.
Gestão de logs e disco
Sem configuração, os logs dos contêineres se acumulam sem parar. Definindo o driver de log local em /etc/docker/daemon.json, como abaixo, os logs são comprimidos e guardados só até o tamanho definido. Depois de salvar, rode systemctl restart docker e vale a partir dos contêineres criados em seguida.
{
"log-driver": "local"
}Imagens não usadas e contêineres parados também ocupam disco. Veja o uso com docker system df e limpe as imagens que não estão em uso com docker image prune -a. Quando os dados crescerem, também dá para conectar ao servidor um disco de blocos NVMe e usá-lo como pasta de dados do Docker.
Proteção dos dados e próximos passos
Os contêineres podem ser excluídos e recriados quando quiser, mas os dados nos volumes não podem ser recriados. Deixe dumps periódicos dos bancos de dados e proteja também o servidor inteiro com backups automáticos ou snapshots. Como fazer está no guia de backups e snapshots.
O arquivo Compose para subir o WordPress com Docker está no guia de instalação do WordPress. Se quer publicar várias aplicações pela tela e conectar certificados HTTPS automaticamente, crie um servidor com a imagem Coolify ou Dokploy. Os tamanhos ideais para uso só com contêineres estão em VPS para contêineres.
