Xem video tóm tắt: Docker Synology chiếm hết ổ: dọn image, log, volume
Container Manager là gì, và vì sao nó âm thầm ăn hết ổ cứng
Container Manager là gói chính thức của Synology để chạy container — nói nôm na là các "hộp" phần mềm đóng gói sẵn, cài vào chạy luôn, không phải lo thiếu thư viện lằng nhằng. Plex, Jellyfin, Home Assistant, Immich... phần lớn app NAS "xịn" bây giờ đều chạy qua đường này. Trên DSM 7.1 trở về trước gói này còn tên là Docker; model không hỗ trợ Container Manager thì vẫn dùng tên cũ.
Cái hay: tải image về, chạy container, xong — không phải tự dựng môi trường như cài tay. Cái dở: chạy vài container vài tháng, ổ cứng cứ cạn dần mà mở File Station nhìn mãi chẳng thấy gì to. Lý do đơn giản — dữ liệu Docker nằm trong một thư mục hệ thống ẩn, mặc định không hiện ra.
Ba tình huống hay gặp nhất:
- Bạn pull image
latestmới của Jellyfin hay Immich vài lần để update — image cũ không tự xóa, cứ thế dồn lại, vài chục GB là chuyện thường. - Immich chạy qua docker-compose (Postgres + Redis + máy học nhận diện khuôn mặt + server) lâu ngày, thư mục cache thumbnail và dữ liệu nhận diện phình to — đây là dữ liệu thật, không phải Docker "bị lỗi".
- Home Assistant hay Plex chạy container cả năm, log driver
json-filekhông giới hạn dung lượng, âm thầm tích vài GB mà chẳng nằm trong mục Image hay Volume nào cả.
So với việc tự quản Docker trên máy Linux qua terminal, Synology cho sẵn nút "Remove Unused Images" ngay trong giao diện Container Manager — bấm vài cái là giải quyết được phần lớn trường hợp, không cần đụng tới dòng lệnh.

Vì sao nên dọn qua GUI trước, SSH để sau
Nghe có vẻ dân pro thì phải SSH mới "chất", nhưng với việc dọn dung lượng thì ngược lại. Nút GUI của Container Manager chỉ xóa image không gắn container nào — không đụng tới volume chứa database hay config, nên an toàn hơn hẳn việc chạy docker system prune -a -- volume s bừa qua SSH rồi tối về mới biết Immich mất sạch ảnh.
Giữ SSH tắt khi không dùng cũng là một lớp bảo mật — mở lâu dài là thêm một cửa cho kẻ dò mật khẩu. Dọn dẹp cơ bản không cần Portainer hay công cụ thứ ba nào cả.
| Tiêu chí | GUI (Container Manager) | SSH (dòng lệnh) |
|---|---|---|
| Đụng tới volume/database | ✗ | ✓ (nếu dùng prune -a) |
| Cần gõ lệnh | ✗ | ✓ |
| Rủi ro mất dữ liệu | Thấp | Cao |
| Phù hợp cho | Dọn cơ bản | Dọn sâu, có hiểu Docker |
Bước 1: Xác nhận đúng Docker là thủ phạm
Trước khi dọn gì, kiểm tra cho chắc — đừng thấy ổ đầy là nhảy vào xóa bừa. Vào Storage Manager > Volume xem dung lượng trống còn bao nhiêu. Sau đó mở File Station, vào volume1, bấm biểu tượng Settings (bánh răng) > tick "Show hidden files" — lúc này mới thấy thư mục @docker.
Muốn biết chính xác @docker to bao nhiêu và thư mục con nào ăn nhiều nhất, SSH vào (Control Panel > Terminal & SNMP > bật SSH) rồi gõ:
sudo du -h -d1 /volume1/@dockerLệnh này liệt kê dung lượng từng thư mục con cấp 1, giúp bạn thấy ngay image, volumes hay containers cái nào đang phình.

Bước 2: Dọn image cũ qua Container Manager
Đây là bước xử lý được phần lớn trường hợp "Docker chiếm dung lượng" do update image nhiều lần. Mở Container Manager > Image, bấm nút "Remove Unused Images". Synology sẽ quét và xóa mọi image dangling (không gắn tag, sinh ra khi build hoặc pull image cũ) cùng image không có container nào đang dùng.
Làm xong, quay lại Storage Manager xem dung lượng trống đã nhích lên chưa — nhiều trường hợp chỉ bước này đã lấy lại chục GB.
Bước 3: Dọn container đã dừng
Qua tab Container, nhìn danh sách container đã Stop từ lâu mà không dùng nữa. Chọn container đó, vào Action > Stop (nếu chưa dừng) rồi Action > Delete.
Lưu ý: xóa container không tự xóa volume dữ liệu đi kèm. Vừa là tin tốt (dữ liệu an toàn), vừa là điều cần nhớ — xóa container không giải phóng được bao nhiêu nếu phần nặng ký thật sự nằm ở volume riêng.
Bước 4: Project (docker-compose) — cẩn thận khi Down
Với stack chạy qua docker-compose như Immich, vào tab Project, chọn project, bấm Down. Container Manager sẽ hỏi có muốn tick "Remove volumes" không.
Đây là bước nguy hiểm nhất trong cả bài. Tick ô này sẽ xóa luôn volume — tức là database Postgres chứa toàn bộ metadata ảnh của Immich, hay config của Home Assistant. Chỉ tick khi bạn chắc 100% muốn xóa sạch để làm lại từ đầu. Bình thường chỉ cần Down để dừng stack, đừng đụng vào ô này.

Lỗi thường gặp
- Chạy
docker system prune -a --volumesqua SSH mà không kiểm tra trước — lệnh này xóa cả volume "unused", nhưng Docker coi volume của container đang stop tạm (để update) cũng là unused. Mất database Immich/Home Assistant là mất luôn, không khôi phục được. Luôn chạydocker system df -vsoát kỹ trước khi thêm cờ--volumes. - Tick nhầm "Remove volumes" khi Down Project — mất sạch config/database của cả stack. Chỉ tick khi chắc chắn.
- Xóa image đang gắn với container chỉ đang dừng (chưa xóa) — lần sau Start lại báo thiếu image, phải pull lại từ đầu, tốn băng thông và thời gian. Container Manager thường chặn việc này, nhưng qua SSH bằng
docker rmi -fthì vẫn xóa được, cẩn thận. - Nhầm dung lượng do log container với dung lượng Docker — Plex hay Home Assistant chạy lâu, log driver
json-filekhông giới hạn, tích vài GB mà chẳng phải Docker "ăn gian", chỉ là quên giới hạn log. Nút Remove Unused Images không đụng tới phần này, phải kiểm tra riêng.
Khi nào cần dọn sâu hơn qua SSH
Nếu dọn image và container xong mà ổ vẫn đầy, bật SSH lên xem breakdown chi tiết:
docker system df -vLệnh này cho thấy rõ Images, Containers, Local Volumes, Build Cache đang chiếm bao nhiêu — không phải đoán mò nữa. Muốn dọn thêm thì dùng hai lệnh an toàn sau:
docker image prune -a
docker container prunedocker image prune -a xóa mọi image không gắn container nào (mạnh hơn nút GUI một chút), docker container prune xóa container đã dừng. Cả hai không đụng tới volume dữ liệu, nên tương đối an toàn.
Còn docker volume prune và docker system prune -a --volumes thì để sau cùng, chỉ chạy khi đã xem kỹ output của docker system df -v và chắc chắn volume nào thật sự mồ côi. Xong việc, tắt SSH lại trong Control Panel.
Tùy chọn nâng cao (không bắt buộc)
Mấy mục dưới đây không cần cho việc dọn dẹp cơ bản — chỉ làm khi bạn muốn kiểm soát chi tiết hơn hoặc tự động hóa:
- Cài Portainer để lọc và xóa volume mồ côi trực quan hơn: vào Container Manager > Registry, tìm
portainer/portainer-ce, hoặc dán compose vào tab Project. Cổng mặc định 9000 (HTTP) / 9443 (HTTPS). Đặt mật khẩu admin mạnh, và đừng mở hai port này ra Internet trực tiếp — chỉ dùng trong LAN hoặc qua VPN. - Giới hạn dung lượng log container bằng cấu hình
max-sizetrong Docker daemon — chỉ cần làm khi log thật sự là nguyên nhân chính, và đòi hỏi sửa qua SSH. - Lập Task Scheduler (Control Panel > Task Scheduler) chạy script dọn tự động theo lịch tuần/tháng, ví dụ gọi
bash /volume1/docker/dockerprune.shvới user root, để không phải lặp lại cả quy trình này mỗi vài tháng.
Trước khi dọn mạnh tay: backup
Dùng Hyper Backup sao lưu volume database của Immich hay Home Assistant trước khi chạy bất kỳ lệnh prune mạnh tay nào qua SSH. Lệnh chạy quyền root có thể xóa dữ liệu không khôi phục được — đọc kỹ output, nhất là dòng hỏi xác nhận y/N, trước khi gõ "y".
Ổ cứng chiếm dung lượng vì Docker thì dọn trong vài phút là xong. Ổ cứng chiếm dung lượng vì database Immich 50.000 tấm ảnh bị bạn prune nhầm thì không có nút nào dọn được nữa.



No comments yet