Cách truy cập container trong Docker để kiểm tra và xử lý sự cố – Bài 5

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 containertrả 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

sh là 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ưng sh gầ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 exec giúp bạn chạy lệnh bên trong container.
  • -it cho 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

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em