Khi tạo image, bạn có thể định nghĩa sẵn lệnh sẽ được chạy khi container khởi động.
CMD ["nginx", "-g", "daemon off;"]
Lệnh này sẽ tự động chạy mỗi khi container từ image đó được start.
2. Dùng docker run để ghi đè lệnh CMD
Có thể chỉ định lệnh cụ thể khi chạy container:
docker run -it nginx /bin/bash
Dùng -it để vào terminal container (interactive + tty)
Nếu dùng -d (chạy nền) + lệnh không phải tiến trình nền → container sẽ dừng ngay.
3. Dùng docker exec để chạy lệnh trên container đang chạy
Cú pháp:
docker exec -it <container_id_or_name> <command>
docker exec -it web1 ls /usr/share/nginx/html
docker exec -it web1 /bin/bash
docker exec -it web1 apt-get update
Yêu cầu container đang chạy — nếu process chính kết thúc → container sẽ tắt.
4. Một số chi tiết quan trọng
| Điều cần nhớ | Ghi chú |
|---|---|
CMD trong Dockerfile | Lệnh mặc định khi container khởi động |
docker run -it <image> <cmd> | Ghi đè CMD trong Dockerfile |
docker exec -it <container> <cmd> | Thực thi lệnh trong container đang chạy |
/bin/bash | Mở shell trong container (nếu có) |
-it flag | Giao diện terminal tương tác |
| Container sẽ dừng nếu không còn tiến trình nào | VD: thoát khỏi bash thì container tắt luôn nếu đó là tiến trình chính |
💡 Ví dụ minh họa
Tạo container với bash:
docker run -it nginx /bin/bash
## Đang ở trong container
nginx -g "daemon off;"
Kiểm tra bằng cách curl từ máy host:
docker inspect <container_id> # Lấy IP riêng
curl <private_ip> # Gửi request đến nginx
Sau khi thoát nginx → container sẽ dừng lại:
exit
docker ps # Container không còn chạy
Sử dụng exec với container đang chạy:
docker exec -it <container> /bin/bash
Note:
CMDlà mặc địnhrunlà ghi đèexeclà truy cập container đang hoạt động