Trong Bài 2, chúng ta đã tìm hiểu về kiến trúc Client - Server và biết rằng Container chính là "chiếc bánh thành phẩm" được đúc ra từ Image (Khuôn đúc).
Hôm nay, chúng ta sẽ chính thức mở Terminal (hoặc Command Prompt/PowerShell) lên để bắt tay vào điều khiển các container này. Đây là bài thực hành nhập môn cực kỳ quan trọng, chứa những câu lệnh mà bạn sẽ phải gõ hàng chục lần mỗi ngày khi làm việc với Docker.
1. Lệnh Khởi Chạy Container: docker run
Đây là câu lệnh quyền lực nhất và cũng phức tạp nhất đối với người mới, vì nó tích hợp cả 3 hành động ngầm: Tải image về (nếu chưa có) -> Khởi tạo container -> Kích hoạt container chạy.
Hãy thử chạy một máy chủ Web (Nginx) bằng câu lệnh sau:
docker run -d -p 8080:80 --name my-web nginx
Giải mã các tham số (Flags) "sống còn":
Nếu bạn chỉ gõ docker run nginx, bạn sẽ thấy Terminal của mình bị "khóa chặt" và không gõ thêm được gì nữa. Để kiểm soát container theo ý muốn, chúng ta cần các tham số sau:
-d (Detached mode): Ra lệnh cho container chạy ngầm dưới nền. Terminal của bạn sẽ lập tức được giải phóng để bạn tiếp tục gõ các lệnh khác.
-p 8080:80 (Port mapping): Mở cổng giao tiếp. Cú pháp chuẩn là -p Máy_Thật:Container. Câu lệnh này có nghĩa là: "Khi tôi truy cập vào cổng 8080 trên máy tính của tôi (Host), hãy dẫn luồng data đó vào cổng 80 bên trong container".
--name my-web: Đặt một cái tên dễ nhớ cho container. Nếu bạn bỏ qua tham số này, Docker sẽ tự động đặt một cái tên ngẫu nhiên rất dị (ví dụ:
focused_curie,reverent_hopper).nginx: Tên của Docker Image mà bạn muốn lấy làm khuôn mẫu.
🌐 Kiểm tra thành quả: Bây giờ, bạn hãy mở trình duyệt web lên và truy cập vào địa chỉ
http://localhost:8080. Bạn sẽ thấy trang chào mừng "Welcome to nginx!" hiện ra. Bạn vừa tự dựng một Web Server thành công chỉ với một dòng lệnh!
2. Lệnh Kiểm Tra Trạng Thái:docker ps
Làm sao bạn biết đang có bao nhiêu container đang chạy ngầm trên máy mình? Hãy dùng lệnhps(Process Status):
docker ps
Lệnh này sẽ hiển thị một cái bảng gồm các thông tin: Container ID, Image, Command, Created, Status, Ports, và Names.
Mẹo nhỏ: Xem các container đã tắt
Mặc định, docker ps chỉ hiển thị các container đang chạy. Nếu một container bị lỗi hoặc đã bị tắt, nó sẽ biến mất khỏi danh sách này. Để xem tất cả các container (bất kể sống hay chết), hãy thêm flag -a (All):
docker ps -a
3. Lệnh Xem Log (Nhật Ký): docker logs
Vì container đang chạy ẩn dưới nền (-d), bạn sẽ không nhìn thấy các dòng log (như log truy cập, log báo lỗi) in ra màn hình. Để xem container đang làm gì bên trong, hãy dùng:
docker logs my-web
Nếu muốn "treo" màn hình để theo dõi log liên tục theo thời gian thực (giống như lệnh tail -f trong Linux), bạn thêm flag -f:
docker logs -f my-web
4. Lệnh Kiểm Tra Chi Tiết: docker inspect
Nếu bạn muốn đào sâu hơn để xem thông tin "hộ khẩu" của container: nó đang nhận IP nội bộ là bao nhiêu, cấu hình phần cứng thế nào, các biến môi trường ra sao... hãy dùng lệnh inspect:
docker inspect my-web
Lệnh này sẽ trả về một đoạn dữ liệu định dạng JSON rất dài và chi tiết về mọi ngóc ngách của container đó.
5. Dừng Và Xóa Container: docker stop & docker rm
Khi không cần dùng đến container nữa, bạn nên dọn dẹp nó để giải phóng tài nguyên máy tính. Quy trình chuẩn gồm 2 bước:
Bước 1: Tắt container (Dừng tiến trình)
docker stop my-web
(Lúc này, container chuyển sang trạng thái Exited, bạn kiểm tra bằng docker ps -a vẫn sẽ thấy xác của nó).
Bước 2: Xóa hoàn toàn container
docker rm my-web
⚠️ Lưu ý cực kỳ quan trọng: Bản chất của container là tạm thời. Khi bạn chạy lệnhdocker rm, toàn bộ "xác" container sẽ bị xóa sổ, đồng nghĩa với việc nếu container đó có sinh ra dữ liệu gì bên trong (như file cấu hình, data lưu trong database) thì cũng sẽ mất sạch. (Chúng ta sẽ học cách cứu vãn dữ liệu này ở bài học về Volumes sau).
🏎️ Tóm Tắt Cheat-Sheet Cho Buổi Học Hôm Nay
Để bạn dễ dàng lưu lại cấu rảnh khi làm việc, đây là bảng tổng hợp các lệnh cốt lõi chúng ta vừa học:
| Câu lệnh | Tác dụng thực tế |
|---|---|
| docker run -d -p 8080:80 --name <tên> <image> | Tạo và chạy ngầm một container từ image |
| docker ps | Liệt kê các container đang hoạt động |
| docker ps -a | Liệt kê TẤT CẢ container (đang chạy và đã dừng) |
| docker logs -f <tên_or_id> | Xem và theo dõi log của container theo thời gian thực |
| docker stop <tên_or_id> | Ra lệnh dừng một container đang chạy |
| docker rm <tên_or_id> | Xóa hoàn toàn một container đã dừng |
Lời kết & Bài học tiếp theo
Chúc mừng bạn đã hoàn thành bài thực hành CLI đầu tiên! Việc gõ thành thạo các lệnh trên sẽ giúp bạn không còn cảm thấy sợ hãi khi làm việc với giao diện dòng lệnh của Docker nữa.
Tuy nhiên, việc đứng ở ngoài "nhìn vào" và xem log đôi khi là chưa đủ. Sẽ có những lúc bạn muốn chui hẳn vào bên trong chiếc thùng container đó để xem file, sửa cấu hình hoặc test kết nối mạng.
Chúng ta sẽ cùng tìm hiểu cách "đột nhập" này trong Bài 4: Chui Vào Bên Trong Container – Quản Lý Và Giám Sát Chi Tiết.