Nhiều hệ thống Docker gặp tình trạng container “vẫn running” nhưng dịch vụ bên trong đã treo. Đây là lý do keyword Docker healthcheck có search intent rất mạnh với đội vận hành Linux/DevOps.
Docker healthcheck là gì?
Healthcheck là cơ chế để Docker định kỳ chạy một lệnh kiểm tra trạng thái thực của ứng dụng trong container. Kết quả sẽ là healthy, unhealthy hoặc starting.
Vì sao production nên bật healthcheck?
- Phát hiện app treo sớm hơn monitor ngoài
- Giảm false-positive trạng thái “running nhưng không phục vụ”
- Hỗ trợ troubleshooting và auto-recovery tốt hơn
Ví dụ Dockerfile với healthcheck
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 CMD curl -fsS http://localhost:8080/health || exit 1
Ví dụ docker-compose.yml
services:
app:
image: myapp:latest
healthcheck:
test: ["CMD", "curl", "-fsS", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
Cách kiểm tra trạng thái health
docker ps
docker inspect --format='{{json .State.Health}}' <container> | jq
Best practices khi viết healthcheck
- Ưu tiên endpoint nhẹ (như /health)
- Tránh query nặng vào DB ở mỗi lần check
- Thiết lập timeout và retries phù hợp với ứng dụng
- Dùng start_period đủ dài cho app boot
Lỗi thường gặp
- Healthcheck luôn fail vì thiếu curl/wget trong image
- Endpoint health phụ thuộc service khác nên không ổn định
- interval quá ngắn gây tốn tài nguyên
Kết luận
Bật Docker healthcheck đúng cách giúp phát hiện sớm container lỗi và tăng độ tin cậy hệ thống. Đây là bước nhỏ nhưng đem lại hiệu quả lớn khi vận hành production.
