Linha de Comando
Last updated
Last updated
Nenhum container em execução:
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Execução da linha de comando:
$ docker container run -d -p 8080:3000 --health-cmd "curl -f http://localhost:3000/health" --health-timeout 5s --health-retries 3 --health-int
erval 10s --health-start-period 30s marcelodpbarbieri/simulador-caos:v1
c4814725ccdf1877d1647e4a00e847f22f09c085bf6c097d7f56c093b50a2c67
Esse comando executa o Docker para rodar um container da imagem marcelodpbarbieri/simulador-caos:v1
, com a porta 8080 do host mapeada para a porta 3000 do container, e inclui um health check personalizado para monitorar a saúde do serviço dentro do container.
$ docker container run -d -p 8080:3000 --health-cmd "curl -f http://localhost:3000/health" --health-timeout 5s --health-retries 3 --health-interval 10s --health-start-period 30s marcelodpbarbieri/simulador-caos:v1
1. docker container run
Esse comando cria e executa um novo container a partir da imagem especificada.
2. -d
O parâmetro -d
(abreviação de detach) faz com que o container rode em segundo plano, retornando imediatamente o controle do terminal.
3. -p 8080:3000
Mapeia a porta 3000 do container para a porta 8080 da máquina host. Isso significa que, ao acessar localhost:8080
no host, você estará acessando o serviço rodando no container na porta 3000.
4. --health-cmd "curl -f http://localhost:3000/health"
Define o comando a ser executado pelo health check. Nesse caso, é usado curl
para fazer uma requisição HTTP GET para o endpoint /health
no serviço rodando na porta 3000 do container.
O -f
do curl
faz com que o comando retorne um erro caso o status HTTP da resposta seja diferente de 2xx ou 3xx. Se o comando falhar, o health check considera o container como unhealthy
.
5. --health-timeout 5s
Define o tempo máximo de 5 segundos para o curl
receber uma resposta. Se o comando não conseguir concluir dentro desse limite, o health check é considerado falho.
6. --health-retries 3
Se o comando de health check falhar, o Docker irá tentar novamente até 3 vezes antes de marcar o container como unhealthy
.
7. --health-interval 10s
Define o intervalo entre cada execução do health check. Nesse caso, o Docker executará o comando de health check a cada 10 segundos.
8. --health-start-period 30s
Define um período de 30 segundos após a criação do container antes de começar a executar os health checks. Isso dá tempo para o serviço dentro do container iniciar corretamente.
9. marcelodpbarbieri/simulador-caos:v1
Essa é a imagem usada para criar o container. A imagem está armazenada no repositório do Docker Hub com a tag v1
. O simulador-caos
provavelmente é o nome da aplicação ou serviço contido na imagem.
10. c4814725ccdf1877d1647e4a00e847f22f09c085bf6c097d7f56c093b50a2c67
Esse é o ID do container criado, que o Docker retornou após a execução do comando. Esse ID pode ser usado para inspecionar o container, verificar logs, etc.
O Docker aguarda 30 segundos antes de iniciar os health checks (tempo de inicialização do serviço).
A cada 10 segundos, o Docker executa curl -f http://localhost:3000/health
.
Se o serviço não responder dentro de 5 segundos, ou retornar um status HTTP de falha, o comando é considerado falho.
Após 3 falhas consecutivas, o container é marcado como unhealthy
.
Esse conjunto de parâmetros garante que o Docker monitore a integridade do serviço e possa tomar ações com base na saúde do container (por exemplo, reiniciar ou sinalizar problemas para um sistema de orquestração).
Container em execução:
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
c4814725ccdf marcelodpbarbieri/simulador-caos:v1 "docker-entrypoint.s…" About a minute ago Up About a minute (healthy) 0.0.0.0:8080->3000/tcp, :::8080->3000/tcp confident_wright
Container saudável:
STATUS Up About a minute (healthy)
Monitoramento:
$ watch 'docker container ls -a'
Quebrar a aplicação:
Como não existe orquestração tem-se apenas esse resultado.