1. Giới thiệu
Docker hỗ trợ —restart policy để thiết lập cách container tự động khởi động lại khi:
- Container bị lỗi.
- Docker daemon bị restart.
- Hệ thống server bị reboot.
2. Các loại Restart Policy
| Tùy chọn | Ý nghĩa |
|---|---|
no | Mặc định. Dù container stop do lỗi hay restart Docker daemon cũng không khởi động lại. |
on-failure | Tự khởi động lại nếu exit code khác 0. |
always | Luôn khởi động lại dù stop hay Docker daemon restart. |
unless-stopped | Giống always, nhưng nếu container bị stop thủ công, Docker daemon restart cũng không start lại. |
3. Ví dụ
## Policy: always
docker container run -d --name always-restart --restart always weather-app:latest
## Policy: unless-stopped
docker container run -d --name unless-stopped --restart unless-stopped weather-app:latest
Kiểm tra container đang chạy:
docker container ls
4. Restart Docker daemon
sudo systemctl restart docker
- always-restart và unless-stopped sẽ tự động khởi động lại.
- Các container không có policy thì không restart.
5. Kiểm chứng unless-stopped
docker container stop unless-stopped
sudo systemctl restart docker
docker container ls
Kết quả: unless-stopped sẽ không restart lại vì đã bị stop thủ công.
6. Kiểm chứng always-restart
docker container stop always-restart
docker container ls # không còn chạy
sudo systemctl restart docker
docker container ls
Kết quả: always-restart sẽ tự khởi động lại khi Docker daemon restart.
7. Tổng kết
| Policy | Tự restart khi lỗi | Restart khi Docker daemon restart | Không restart nếu stop thủ công |
|---|---|---|---|
| no | ❌ | ❌ | ✅ |
| on-failure | ✅ | ❌ | ✅ |
| always | ✅ | ✅ | ❌ |
| unless-stopped | ✅ | ✅ | ✅ |