
Vài stack tôi từng chạy trên LXC/VM giờ gom về NAS Synology — một máy, ít layer ảo hóa, dữ liệu và container cùng chỗ. Trên DSM 7.2, Docker không còn package “Docker” cũ mà là Container Manager: Compose trong GUI, nhưng có vài “bẫy” khác hẳn Linux thuần.
After moving part of my homelab to a mini PC running DSM, I wanted containers that used to live on Proxmox/LXC in one place: familiar NAS backups, fewer VMs eating RAM. The first step is not a new API — it is Container Manager on DSM 7.2 plus the same Compose habits I use on a VPS.
Click any figure or use the carousel for fullscreen (Esc to close).
:::info Not on a VPS? On plain Linux, see Dockge or Docker monitoring. This post focuses on Synology + DSM. :::
DSM 7.2: Container Manager replaces the old Docker package
| DSM version | Package | Notes |
|---|---|---|
| 6.x, 7.0–7.1 | Docker | Basic container/image UI |
| 7.2+ | Container Manager | Project (Compose stacks), registry, centralized logs |
Install: Package Center → Container Manager → Install. Restart the package if DSM asks after an update.
Container Manager sections
- Overview — CPU, RAM, network at a glance.
- Project — Docker Compose stacks (where you spend most of your time).
- Container — running/stopped containers.
- Image — pulled images.
- Registry — shortcuts to common images.
- Network — bridge/macvlan, etc.
- Log — engine and container messages.
Create a new stack from the GUI (Project)
- Container Manager → Project → Create.
- Project name — display name (e.g.
uptime-kuma). - Path — NAS folder for
docker-compose.yml(e.g./volume1/docker/uptime-kuma). - Source — Create docker-compose.yml, paste your Compose file.
- Next → skip Web portal until you need DSM reverse proxy integration.
- Check Start the project once it is created → Done.
Minimal test stack:
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- ./data:/app/data
Open http://<NAS-IP>:3001. If the port is blocked, check Control Panel → Security firewall rules.
Bind mount errors: Synology does not create host folders
On a Linux server, ./config:/config often creates the host path on docker compose up. On Synology you often see:
Error response from daemon: Bind mount failed: ...
Cause: the DSM engine does not create new host directories at start; paths in volumes: must already exist.
Fix:
- File Station (or SSH) → open the project path (e.g.
/volume1/docker/uptime-kuma). - Manually create folders referenced in Compose (
data,config, …). - Project → select the project → Action → Build (or start again).
:::tip Folder layout
I keep stacks under /volume1/docker/<stack-name>/ — one backup/snapshot scope, easier migrations.
:::
Import an existing docker-compose.yml
You do not have to paste in the wizard:
- Create the folder +
docker-compose.ymlwith Text Editor, SFTP, orrsyncfrom another machine. - Project → Create → Path points at that folder.
- DSM loads the existing compose file → Next → start.
This matches Git-versioned stacks you only sync to the NAS.
After the stack is up
- Overview — host-wide CPU/RAM/network.
- Container → Logs — like
docker logs -f. - Image updates: Project → Action → Build, or pull in Image and recreate as needed.
When the NAS runs many containers, consider monitoring or SSH docker stats.
SSH and CLI (optional)
Container Manager covers a lot; for scripts:
- Control Panel → Terminal & SNMP → enable SSH.
sudo docker ps/sudo docker compose -f /volume1/docker/.../docker-compose.yml logs -f
Your user may need the docker group or sudo depending on DSM settings.
:::warning Licensing and hardware This assumes a supported Synology NAS with legitimate DSM. Running DSM on uncertified hardware has legal and update risks — evaluate before production homelab use. :::
Summary
- DSM 7.2 → Container Manager, not the legacy Docker package.
- Deploy via Project + Compose; import folders that already contain
docker-compose.yml. - Create bind-mount directories first — the biggest difference vs Linux/VPS.
- Overview for metrics; SSH when you need automation.
A NAS does not replace a VPS for every workload — but for internal services (monitoring, notes, tunnel agents…) close to your data, Container Manager + Compose is the lowest-friction path I use today.
Sau khi chuyển homelab sang mini PC chạy DSM, tôi muốn gom container từ Proxmox/LXC về một nơi: backup volume NAS quen thuộc, ít VM “ăn” RAM. Bước đầu không phải học API mới — chỉ cần Container Manager trên DSM 7.2 và vài thói quen Compose đã dùng trên VPS.
Bấm vào hình hoặc dùng carousel để xem full màn hình (Esc để thoát).
:::info Không phải VPS? Nếu bạn chỉ có Linux thuần, xem Dockge hoặc monitoring Docker. Bài này tập trung Synology + DSM. :::
DSM 7.2: Container Manager thay package Docker
| Phiên bản DSM | Package | Ghi chú |
|---|---|---|
| 6.x, 7.0–7.1 | Docker | GUI container/image cơ bản |
| 7.2+ | Container Manager | Thêm Project (Compose stack), registry, log tập trung |
Cài đặt: Package Center → tìm Container Manager → Install. Khởi động lại package nếu được nhắc sau update DSM.
Các mục trong Container Manager
- Overview — CPU, RAM, network tổng quan.
- Project — stack Docker Compose (đây là nơi bạn sẽ làm việc nhiều nhất).
- Container — container đang chạy/dừng.
- Image — image đã pull.
- Registry — shortcut pull image phổ biến.
- Network — bridge/macvlan…
- Log — thông báo từ engine và container.
Tạo stack mới từ GUI (Project)
- Container Manager → Project → Create.
- Project name — tên hiển thị (ví dụ
uptime-kuma). - Path — thư mục trên NAS lưu
docker-compose.yml(ví dụ/volume1/docker/uptime-kuma). - Source — chọn Create docker-compose.yml, dán nội dung Compose.
- Next → bỏ qua Web portal nếu chưa cần reverse proxy DSM.
- Tick Start the project once it is created → Done.
Ví dụ stack nhẹ để thử:
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- ./data:/app/data
Sau khi chạy, mở http://<IP-NAS>:3001 (hoặc hostname nội bộ). Firewall DSM: Control Panel → Security nếu port bị chặn.
Lỗi bind mount: Synology không tự tạo thư mục host
Trên Linux server, bind mount ./config:/config thường tự tạo thư mục khi docker compose up. Trên Synology, bạn hay gặp:
Error response from daemon: Bind mount failed: ...
Nguyên nhân: engine DSM không tạo thư mục host mới khi start project; path trong volumes: phải đã tồn tại.
Cách xử lý:
- File Station (hoặc SSH) → mở path project (ví dụ
/volume1/docker/uptime-kuma). - Tạo tay các thư mục khớp compose (
data,config, …). - Project → chọn project → Action → Build (hoặc start lại).
:::tip Quy ước thư mục
Tôi hay để mọi stack dưới /volume1/docker/<tên-stack>/ — backup Hyper Backup/ Snapshot một lần, dễ migrate.
:::
Import docker-compose.yml đã có sẵn
Bạn không bắt buộc paste trong wizard:
- Tạo thư mục + file
docker-compose.ymlbằng Text Editor, SFTP, hoặcrsynctừ máy khác. - Project → Create → Path trỏ vào thư mục đó.
- DSM đọc file compose có sẵn → Next → start.
Workflow này khớp khi bạn đã version-control stack trên Git và chỉ đồng bộ lên NAS.
Sau khi stack chạy
- Overview — xem CPU/RAM/network toàn hệ.
- Container → Logs — debug tương đương
docker logs -f. - Cập nhật image: Project → Action → Build / pull image mới trong tab Image rồi recreate container (tùy stack).
Khi NAS bắt đầu “đầy” container, cân nhắc monitoring hoặc docker stats qua SSH nếu bật terminal.
SSH và CLI (tùy chọn)
Container Manager đủ cho nhiều tác vụ; khi cần script:
- Control Panel → Terminal & SNMP → bật SSH.
sudo docker ps/sudo docker compose -f /volume1/docker/.../docker-compose.yml logs -f
Quyền user phải thuộc nhóm docker hoặc dùng sudo — tùy cấu hình DSM.
:::warning Bản quyền & phần cứng Bài viết giả định Synology NAS chính hãng với DSM được hỗ trợ. Chạy DSM trên hardware không được chứng nhận có rủi ro pháp lý và update — tự đánh giá trước khi làm homelab production. :::
Tổng kết
- DSM 7.2 → Container Manager, không còn package Docker cũ.
- Deploy qua Project + Compose; import folder có
docker-compose.ymlsẵn. - Tạo thư mục bind mount trước — khác biệt lớn so với Linux/VPS.
- Overview cho metrics; SSH khi cần automation.
NAS không thay VPS cho mọi workload — nhưng để chạy vài dịch vụ nội bộ (monitor, memo, tunnel agent…) gần dữ liệu, Container Manager + Compose là lối vào ít ma sát nhất tôi đang dùng.
