Các lệnh Docker thiết yếu cho quản trị container

Khi làm việc với Docker trong môi trường sản xuất hoặc phát triển, việc nắm vững một số lệnh cốt lõi giúp kiểm soát hiệu quả vòng đời container và hình ảnh. Dưới đây là những lệnh thường dùng nhất, được trình bày lại với cấu trúc rõ ràng, ví dụ cập nhật và giải thích tập trung vào ngữ cảnh thực tế.

1. Lưu và khôi phục hình ảnh dưới dạng tệp nén

Lệnh docker save xuất một hoặc nhiều hình ảnh thành định dạng .tar, phù hợp để sao lưu cục bộ hoặc chuyển giao giữa các hệ thống không kết nối mạng.

docker save [TÙY_CHỌN] TÊN_HÌNH_ẢNH[:THẺ] > tệp_lưu.tar

Ví dụ: Lưu hình ảnh alpine:latest thành alpine-backup.tar:

$ docker save alpine:latest > alpine-backup.tar
$ ls -lh alpine-backup.tar
-rw-r--r-- 1 user user 5.6M Dec 20 22:05 alpine-backup.tar

Để khôi phục hình ảnh từ tệp đã lưu:

$ docker load < alpine-backup.tar
Loaded image: alpine:latest

2. Giám sát đầu ra nhật ký container

Lệnh docker logs trích xuất luồng stdout/stderr của container đang chạy hoặc đã dừng. Đây là công cụ then chốt để gỡ lỗi ứng dụng.

  • -f: Theo dõi nhật ký theo thời gian thực (tương tự tail -f)
  • --since="2024-01-01": Chỉ hiển thị nhật ký từ thời điểm xác định
  • --tail=20: Hiển thị 20 dòng mới nhất

Ví dụ: Xem 15 dòng nhật ký gần nhất từ container có ID b8a3c1e7f9d2, bắt đầu từ 00:00 hôm nay:

$ docker logs --since="2024-01-01T00:00:00" --tail=15 b8a3c1e7f9d2

3. Xóa container một cách có kiểm soát

Lệnh docker rm loại bỏ container đã dừng. Với container đang hoạt động, cần thêm cờ -f để buộc dừng và xóa ngay lập tức.

docker rm [-f] [-v] TÊN_HOẶC_ID_CONTAINER

Trong đó:

  • -f: Gửi tín hiệu SIGKILL để chấm dứt container đang chạy
  • -v: Xóa đồng thời các volume gắn với container (nếu có)

Ví dụ:

$ docker ps -a | grep "myapp"
a1b2c3d4e5f6   nginx:alpine   "nginx -g 'daemon..."   2 hours ago   Exited (0) 1 hour ago   myweb
$ docker rm -f a1b2c3d4e5f6
a1b2c3d4e5f6

4. Sao chép dữ liệu hai chiều giữa host và container

Lệnh docker cp hỗ trợ truyền tệp hoặc thư mục giữa hệ thống máy chủ và hệ thống tệp của container — tương tự scp, nhưng không yêu cầu SSH.

# Từ host → container
docker cp /path/on/host CONTAINER_ID:/path/in/container

# Từ container → host
docker cp CONTAINER_ID:/path/in/container /path/on/host

Ví dụ: Sao chép thư mục cấu hình từ host vào container đang chạy:

$ docker cp ./config/nginx.conf webserver:/etc/nginx/conf.d/default.conf

5. Phát hiện thay đổi hệ thống tệp trong container

Lệnh docker diff liệt kê các thay đổi đối với lớp đọc-ghi của container so với hình ảnh gốc — hữu ích để kiểm tra hành vi runtime hoặc xác minh tính toàn vẹn sau khi cập nhật.

Ký hiệu đầu dòng:

  • A: Tệp/thư mục được thêm mới
  • D: Đã bị xóa
  • C: Đã bị sửa đổi

Ví dụ:

$ docker diff 9f8e7d6c5b4a
C /etc
A /etc/myapp.conf
C /var/log
A /var/log/app.log

6. Dọn dẹp hình ảnh không còn sử dụng

Lệnh docker rmi xóa hình ảnh khỏi bộ nhớ cục bộ. Nếu hình ảnh đang được sử dụng bởi container (kể cả đã dừng), cần xóa container trước hoặc dùng -f.

docker rmi [-f] [--no-prune] TÊN_HÌNH_ẢNH[:THẺ]

Ví dụ: Xóa hình ảnh ubuntu:22.04 và bỏ qua việc dọn dẹp các lớp trung gian:

$ docker rmi ubuntu:22.04 --no-prune

Thẻ: docker-cli docker-images docker-containers devops-tools linux-administration

Đăng vào ngày 20 tháng 6 lúc 12:09