Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Giải Phóng Dung Lượng Đĩa: Di Chuyển Docker Volumes Sang Phân Vùng Lớn Hơn An Toàn

Mặc định Docker lưu trữ tất cả tại /var/lib/docker trên phân vùng root (/). Khi container phát triển, thư mục này lấp đầy nhanh, gây chậm server, lỗi ghi dữ liệu, crash ngẫu nhiên. Hướng dẫn này trình bày cách di chuyển Docker volume (hoặc toàn bộ dữ liệu Docker) sang phân vùng khác để giải phóng root.

Tại Sao Cần Di Chuyển Docker Volumes?

  • Giải phóng không gian root filesystem.
  • Ngăn chặn crash do hết ổ cứng.
  • Lưu trữ dữ liệu ứng dụng lớn (DB MySQL, PostgreSQL...) trên ổ chuyên dụng.
  • Cải thiện quản lý lưu trữ tổng thể.

Xác Định Thư Mục Docker Volume

  1. Liệt kê volume: docker volume ls
  2. Xem chi tiết volume: docker volume inspect ten_volume > tìm trường Mountpoint - đường dẫn chính xác chứa dữ liệu.

Phương Pháp 1: Di Chuyển Toàn Bộ Thư Mục Dữ Liệu Docker (Data Root) - Khuyên Dùng

Cách sạch, an toàn nhất nếu /var/lib/docker đang đầy.

  1. Dừng Docker: sudo systemctl stop docker
  2. Copy dữ liệu bằng rsync (giữ quyền, tiến trình):
    sudo rsync -avxP /var/lib/docker/ /duong/dan/moi/docker-data/
    Hoặc tốt hơn (giữ hard link, ACL, extended attr):
    sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/
  3. Đổi tên thư mục cũ backup: sudo mv /var/lib/docker /var/lib/docker.old
  4. Cấu hình Docker daemon: sudo nano /etc/docker/daemon.json > thêm:
    { "data-root": "/duong/dan/moi/docker-data" }
  5. Khởi động lại Docker: sudo systemctl start docker
  6. Kiểm tra: docker info | grep "Docker Root Dir" phải hiển thị đường dẫn mới.
  7. Xóa backup cũ: sudo rm -rf /var/lib/docker.old (sau khi xác nhận ổn định).

Phương Pháp 2: Dùng Docker Desktop (GUI) - Di Chuyển Toàn Bộ Dữ Liệu

Docker Desktop cho phép đổi Disk Image Location (chuyển images, containers, volumes, build cache).

  1. Mở Docker Desktop > Settings > Resources → Advanced.
  2. Tìm Disk Image Location > Browse chọn thư mục trên phân vùng mới (ví dụ /mnt/newdisk/docker-data).
  3. Nhấn Apply & Restart. Docker Desktop sẽ tự di chuyển tất cả dữ liệu.

Lưu ý: Chỉ chuyển toàn bộ, không chuyển được volume riêng lẻ qua GUI.

Phương Pháp 3: Di Chuyển Chỉ Volume Cụ Thể (Bind Mount)

Phù hợp khi chỉ muốn chuyển 1 volume lớn (ví dụ DB) mà không động đến cả Docker.

  1. Dừng container dùng volume: docker stop ten_container
  2. Copy dữ liệu volume sang vị trí mới: sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/
  3. Sửa docker-compose.yml dùng bind mount thay volume Docker-managed:
    services:
    my_service:
    volumes:
    - /data/docker/my_volume:/duong/dan/trong/container
  4. Triển khai lại: docker-compose up -d

Tổng Kết

Di chuyển Docker data root hoặc volume cụ thể sang phân vùng lớn hơn giải phóng root, ổn định server. Nếu không thể di chuyển toàn bộ, vẫn có thể dọn dẹp bằng docker system prune (xóa container/image/network/cache không dùng) hoặc dùng Linux bind mount cho thư mục lớn.