Chào các bạn, hôm nay chúng ta sẽ tìm hiểu một kỹ năng rất quan trọng trong quá trình sử dụng Docker: truy cập vào bên trong container để kiểm tra, debug hoặc xử lý lỗi.
Khi triển khai ứng dụng thực tế, đôi khi container bị lỗi, không hoạt động như mong đợi, hoặc không hiển thị kết quả như mong muốn. Lúc đó, bạn cần đăng nhập vào bên trong container để kiểm tra.
Xem thêm:
Docker Registry và Docker Repo – Bài 6
Hướng dẫn Mapping Port trong Docker – Mở port (expose và publish) – Bài 7
1. Tại sao cần truy cập container?
Container trong Docker là một môi trường độc lập, giống như một “máy ảo siêu nhẹ”. Để kiểm tra bên trong nó có gì — ví dụ như:
- Có file HTML không?
- Có tiến trình (process) nào đang chạy không?
- Có cài đúng phiên bản phần mềm chưa?
→ bạn cần truy cập vào container.
2. Dùng docker exec để chạy lệnh bên trong container
Cú pháp:
docker exec [options] <container_name_or_id> <command>
Ví dụ bạn muốn chạy lệnh hostname trong container để xem tên máy:
docker exec web01 hostname
Hoặc dùng ID container:
docker exec 7fa3c1 hostname
Lệnh này chạy một lệnh duy nhất bên trong container và trả về kết quả ra ngoài, giống như bạn đang thao tác từ xa.
3. Truy cập terminal của container bằng -it
Nếu bạn muốn đăng nhập vào bên trong container như đang ngồi trong đó, hãy thêm 2 tuỳ chọn quan trọng:
-i: interactive – cho phép bạn gõ lệnh.-t: terminal – giả lập giao diện terminal chuẩn.
Ví dụ:
docker exec -it web01 sh
shlà shell mặc định của Linux, dùng để thao tác dòng lệnh. Một số container hiện đại hỗ trợbash, nhưngshgần như luôn có sẵn.
Bạn sẽ thấy prompt thay đổi và giờ bạn đang ở bên trong container.
Kiểm tra bạn đang ở đâu:
hostname
pwd
ls
4. So sánh: chạy exec có và không có -it
| Mục đích | Câu lệnh | Ghi chú |
|---|---|---|
| Xem hostname (1 lệnh, không truy cập) | docker exec web01 hostname |
Trả kết quả ra ngoài |
| Truy cập vào bên trong container | docker exec -it web01 sh |
Truy cập được file, log, sửa lỗi |
5. HandOn
Mục tiêu:
- Tạo container PHP-Apache
- Tạo file HTML mẫu
- Truy cập từ trình duyệt bằng public IP
Bước 1: Tạo container PHP-Apache
docker pull php:apache
docker run -d --name web03 -p 80:80 php:apache
Bước 2: Truy cập container
docker exec -it web03 sh
Bước 3: Tạo file HTML mẫu
echo "Hello, world!" > /var/www/html/index.html
Bước 4: Kiểm tra trên trình duyệt
Truy cập địa chỉ IP của máy chủ với port 80:
http://<your_server_ip>
Bạn sẽ thấy dòng chữ Hello, world! nếu tạo đúng file.
6. Kiểm tra tiến trình trong container
Tương tự như Linux, bạn có thể dùng:
docker top web03
Hoặc:
docker exec web03 ps -ef
7. Một số lệnh hữu ích khác
| Mục đích | Câu lệnh |
|---|---|
| Truy cập container bằng shell | docker exec -it <container> sh |
| Xem tiến trình đang chạy | docker exec <container> ps -ef |
| Xem file trong thư mục | docker exec <container> ls /var/www/html |
| In chuỗi từ container | docker exec <container> echo "Xin chào" |
| Chạy lệnh không cần truy cập | docker exec <container> hostname |
Kết luận
docker execgiúp bạn chạy lệnh bên trong container.-itcho phép truy cập như đang dùng terminal thật.- Có thể dùng để kiểm tra, tạo file, hoặc khắc phục lỗi trong môi trường container.
Bài viết cùng chủ đề:
Hướng dẫn sử dụng Docker Volume – Bài 8
Docker Network là gì? Làm sao các container kết nối với nhau? – Bài 9