O seu primeiro contentor, e o que ver quando não arranca

Um contentor é um programa a correr dentro do seu próprio espaço, com tudo o que precisa já dentro de uma imagem. Vive enquanto o seu processo principal viver: se o programa termina ou falha, o contentor pára. Quase tudo o que corre mal ao início resolve-se com dois comandos, docker ps -a e docker logs. Este artigo pressupõe o Docker instalado num VPS: veja como instalar.

Arrancar um servidor web de ensaio

1 Arranque o contentor: docker run -d --name teste -p 8080:80 nginxO -d deixa-o em segundo plano, o --name dá-lhe um nome, e o -p 8080:80 liga a porta 8080 do servidor à porta 80 do contentor. A imagem nginx é descarregada à primeira.
2 Veja se está de pé: docker psMostra só os que estão a correr. Com docker ps -a mostra também os que pararam.
3 Peça a página, no próprio servidor: curl http://localhost:8080. Vem o HTML de boas-vindas do nginx.
4 Veja os registos: docker logs teste, ou com -f para ficar a seguir em directo, e --tail 100 para só as últimas linhas.
5 Pare e apague: docker stop teste
docker rm teste
Parar não apaga. Enquanto o contentor existir, o nome teste está ocupado.

Quando não arranca: o que o sintoma quer dizer

O que vê O que costuma ser O que fazer
Estado «Exited (0)» O programa acabou normalmente. Um contentor sem nada para fazer termina logo. Se esperava um serviço, a imagem ou o comando não é de um serviço. Leia a página da imagem.
Estado «Exited (1)» O programa falhou ao arrancar: ficheiro em falta, variável não definida, erro de configuração. docker logs nome: a última linha costuma dizer porquê.
Estado «Exited (137)» O contentor foi morto à força. Muitas vezes é falta de memória do servidor. free -h e veja se o VPS tem memória livre.
«Restarting» Falha e volta a arrancar, em ciclo, por causa da política de reinício. Os registos, como em Exited (1). Pare-o primeiro: docker stop nome.
«port is already allocated» A porta que pediu já está a ser usada por outra coisa. sudo ss -tlnp mostra quem a tem. Escolha outra porta do lado esquerdo.
«pull access denied» ou «not found» Nome da imagem mal escrito, ou imagem privada sem sessão iniciada. Confira o nome em hub.docker.com.
«permission denied» no docker.sock O seu utilizador não está no grupo docker. Use sudo, ou veja o fim do artigo de instalação.

Para olhar por dentro de um contentor que está a correr: docker exec -it teste shAbre uma linha de comandos lá dentro. Saia com exit. Para ver a configuração completa (portas, volumes, variáveis): docker inspect teste.

O que está dentro de um contentor desaparece com ele. Se apagar o contentor, os ficheiros que o programa criou lá dentro vão-se, a menos que tenha ligado uma pasta ou um volume. Antes de pôr dados importantes num contentor, leia Docker Compose: uma aplicação com a sua base de dados.
Publicar uma porta abre-a ao mundo. Com -p 8080:80 qualquer pessoa chega lá, e o Docker passa por cima das regras do ufw. Para ensaios só no servidor, use -p 127.0.0.1:8080:80. Veja portas e firewall num VPS.

O servidor não responde, ou o SSH deixou de entrar? Isso é connosco: diga-nos o que vê e a hora a que começou. A aplicação dentro do contentor é sua, e o guia acima ajuda a descobrir o que a faz falhar.

Abrir um pedido de suporte

VEJA TAMBÉM

Instalar o Docker e o Docker Compose num VPS

Docker Compose: uma aplicação com a sua base de dados

Erros comuns em VPS e Cloud: SSH, memória, disco e reinícios

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?