O que é o Docker e como se usa num VPS?
O Docker é uma ferramenta que executa uma aplicação, juntamente com tudo o que ela precisa, dentro de um pacote isolado chamado contentor. Num VPS, usar o Docker significa iniciar uma aplicação a partir de um pacote pronto, em vez de a instalar por partes no servidor. A instalação e a remoção levam alguns comandos, e as aplicações não perturbam as definições umas das outras.
Ao contrário de uma máquina virtual, um contentor não transporta o seu próprio sistema operativo. Partilha o kernel do servidor, por isso arranca em segundos e usa pouca memória. Em contrapartida, o seu isolamento não é tão forte como o de uma máquina virtual.
Quatro termos bastam para começar
| Termo | O que significa |
|---|---|
| Imagem | O pacote pronto de uma aplicação. É transferido de um registo, como o Docker Hub. |
| Contentor | Uma cópia em execução iniciada a partir de uma imagem. |
| Volume | Armazenamento persistente que guarda os seus dados mesmo quando o contentor é apagado. |
| Compose | Uma ferramenta que define vários contentores num só ficheiro compose.yaml e os gere com um único comando. |
Apagar um contentor apaga os ficheiros que estão dentro dele. Monte num volume, ou numa pasta do servidor, tudo o que tem de sobreviver, como uma base de dados.
Como se instala o Docker no Ubuntu?
Primeiro ligue-se ao servidor por SSH. O pacote docker.io dos repositórios do Ubuntu funciona, e o servidor Docker pré-instalado da Seturack usa-o. Para a versão mais recente, use o repositório apt do próprio Docker. Segundo a documentação oficial do Docker, os pacotes do Ubuntu, como docker.io e docker-compose, entram em conflito com os pacotes do próprio Docker, por isso remova-os primeiro se estiverem instalados.
- Siga a secção «apt repository» na página de instalação do Docker para Ubuntu para adicionar a chave de assinatura e a origem do repositório. Execute os comandos de lá tal como estão, porque mudam entre versões.
- Instale os pacotes:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - Verifique se o serviço está em execução:
sudo systemctl status docker - Execute o contentor de teste:
sudo docker run --rm hello-world
Se vir a mensagem de boas-vindas, o Docker está pronto. No Ubuntu e no Debian, o serviço arranca sozinho em cada arranque do sistema.
O seu primeiro contentor
Inicie um servidor web com um único comando:
docker run -d --name web --restart unless-stopped -p 80:80 nginx:1.30
-d executa o contentor em segundo plano. --restart unless-stopped volta a iniciá-lo quando o servidor reinicia ou o contentor falha. -p 80:80 liga a porta 80 do servidor ao contentor. nginx:1.30 é o nome da imagem e a etiqueta da versão. A etiqueta é só um exemplo, por isso escolha a etiqueta estável atual na página oficial do Nginx no Docker Hub. Abra o endereço IP do servidor num navegador e verá a página de boas-vindas do Nginx. Para o remover, execute docker rm -f web.
Monte um volume para os dados persistentes, por exemplo -v sitedata:/usr/share/nginx/html. Lista os volumes com docker volume ls. Os serviços do mesmo ficheiro compose.yaml chegam uns aos outros pelo nome do serviço, por isso a sua aplicação liga-se à base de dados como db, por exemplo.
Quando tiver vários contentores, ponha-os todos num ficheiro compose.yaml e execute docker compose up -d na pasta do ficheiro. As chaves image, restart, ports e volumes do ficheiro correspondem às opções acima. Verifica o estado com docker compose ps, lê os registos com docker compose logs -f e desliga tudo com docker compose down.
Comandos que vai usar todos os dias
| Comando | Para que serve |
|---|---|
docker ps | Lista os contentores em execução. Acrescente -a para ver também os parados. |
docker logs -f web | Acompanha em direto o registo do contentor web. |
docker exec -it web sh | Abre uma shell dentro do contentor. |
docker stats | Mostra a utilização de CPU e de memória dos contentores. |
docker compose pull e docker compose up -d | Transfere a nova imagem e substitui o contentor pelo novo. Os dados nos volumes são mantidos. |
Antes de atualizar, leia as notas de versão da aplicação e aumente você mesmo a etiqueta de versão no ficheiro compose. O objetivo de fixar a etiqueta é que uma atualização passe a ser uma decisão e não um acidente.
Quatro coisas a que deve estar atento
- O Docker contorna as regras do ufw. Segundo a documentação oficial, as portas que o Docker publica são abertas antes de as regras do ufw se aplicarem. Uma regra do ufw que negue uma dessas portas não tem efeito. Associe apenas ao endereço local um serviço que não deve ser acessível do exterior, por exemplo
-p 127.0.0.1:5432:5432. Os contentores da mesma rede Docker já se alcançam uns aos outros, por isso não precisa de publicar uma base de dados. - A etiqueta latest. Se não indicar nenhuma etiqueta, é obtida a
latest. Na obtenção seguinte, a sua aplicação pode saltar para uma versão que não esperava. Escreva uma etiqueta específica e agende você as atualizações. - O grupo docker equivale a root. Adicionar um utilizador ao grupo
dockerdá-lhe privilégios ao nível de root (documentação oficial). Adicione apenas contas em que confia. - Os registos e as imagens enchem o disco. A definição de registos predefinida do Docker não tem limite de tamanho. Defina um no contentor:
--log-opt max-size=10m --log-opt max-file=3. Odocker system dfmostra a utilização do disco e odocker image pruneremove as imagens sem etiqueta.
Docker ou instalação direta?
O Docker ajuda quando executa várias aplicações que precisam de versões diferentes no mesmo servidor, quando quer experimentar uma aplicação e removê-la sem deixar rasto, ou quando o programador publica uma imagem oficial. Num caso simples, como um único site WordPress, uma instalação direta também serve. O Docker é uma camada extra: atualizá-lo, monitorizá-lo e fazer cópias dos volumes é consigo. Se tiver dúvidas, comece com uma aplicação pequena. Não tem de passar tudo para o Docker de uma só vez.
O Docker vem pronto na Seturack
Se não quiser instalar o Docker por si, pode encomendar um servidor com a aplicação Docker. O Docker e o Compose vêm instalados e a configuração demora cerca de 2,5 minutos. A firewall (ufw) está ativa e só a porta SSH está aberta ao exterior, o fail2ban protege o SSH e os registos dos contentores estão limitados a 3 ficheiros de 10 MB por contentor. A aplicação não tem interface web, por isso o painel não mostra endereço do site. A armadilha das portas descrita acima aplica-se também aqui. Para começar com um servidor pronto, veja a página do VPS Docker.
Comentários0
Ainda não existem comentários
Seja a primeira pessoa a partilhar a sua opinião.
Inicie sessão ou crie uma conta para deixar um comentário.