Docker加持!玩客云刷机部署24个实用容器指南
一、Docker环境部署与优化
1.1 安装Docker引擎
# Armbian系统一键安装
curl -fsSL https://get.docker.com | sh
# 非root用户权限配置
sudo usermod -aG docker $USER
1.2 基础优化配置
# 限制Docker内存占用(防止OOM)
echo "GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"" >> /etc/default/grub
update-grub
# 配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
systemctl restart docker
二、24个精选容器部署清单
2.1 媒体娱乐中心
1. Jellyfin(跨平台影音服务器)
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin:latest
ports:
- 8096:8096
volumes:
- /srv/media:/media
deploy:
resources:
limits:
memory: 256M
2. Navidrome(音乐流媒体)
docker run -d --name navidrome
-p 4533:4533
-v /srv/music:/music
-v /srv/data:/data
--restart unless-stopped
deluan/navidrome:latest
3. Audiobookshelf(有声书管理)
environment:
- AUDIOBOOKSHELF_UID=1000
- AUDIOBOOKSHELF_GID=1000
volumes:
- /srv/audiobooks:/audiobooks
2.2 下载与存储
4. qBittorrent(BT下载)
docker run -d
--name=qbittorrent
-e PUID=1000
-e PGID=1000
-p 6881:6881
-p 6881:6881/udp
-p 8080:8080
-v /srv/downloads:/downloads
--restart unless-stopped
linuxserver/qbittorrent:latest
5. Alist(多网盘聚合)
command:
- "--no-prefix"
- "--port"
- "5244"
environment:
- PUID=1000
- PGID=1000
6. Syncthing(文件同步)
docker run -d
--network host
-v /srv/sync:/var/syncthing
syncthing/syncthing:latest
2.3 智能家居
7. Home Assistant(智能中枢)
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0" # Zigbee适配器
environment:
- TZ=Asia/Shanghai
8. Node-RED(自动化流)
docker run -d
-p 1880:1880
-v /srv/nodered:/data
--name nodered
nodered/node-red:latest
9. Zigbee2MQTT(设备接入)
volumes:
- /srv/zigbee:/app/data
network_mode: host
2.4 网络工具
10. AdGuard Home(去广告DNS)
docker run -d
--name adguard
-v /srv/adguard:/opt/adguardhome/work
-v /srv/adguard_conf:/opt/adguardhome/conf
-p 53:53/tcp -p 53:53/udp
-p 3000:3000/tcp
--restart always
adguard/adguardhome:latest
11. Nginx Proxy Manager(反向代理)
environment:
DB_SQLITE_FILE: "/data/database.sqlite"
volumes:
- /srv/npm:/data
12. WireGuard(虚拟专网)
docker run -d
--name=wireguard
--cap-add=NET_ADMIN
--cap-add=SYS_MODULE
-e PUID=1000
-e PGID=1000
-p 51820:51820/udp
-v /srv/wireguard:/config
--sysctl="net.ipv4.conf.all.src_valid_mark=1"
--restart unless-stopped
linuxserver/wireguard:latest
2.5 开发与监控
13. Portainer(容器管理)
docker run -d
-p 9000:9000
-v /var/run/docker.sock:/var/run/docker.sock
portainer/portainer-ce:latest
14. NetData(实时监控)

cap_add:
- SYS_PTRACE
environment:
- NETDATA_PORT=19999
15. VScode Server(云端IDE)
docker run -d
--name=code-server
-p 8081:8080
-v "/srv/project:/home/coder/project"
-v "/srv/config:/home/coder/.config"
codercom/code-server:latest
2.6 其他实用工具
16. Uptime Kuma(服务监控)
environment:
- PUID=1000
- PGID=1000
volumes:
- /srv/uptime:/app/data
17. Memos(碎片笔记)
docker run -d
--name memos
-p 5230:5230
-v /srv/memos/.memos:/var/opt/memos
neosmemo/memos:latest
18. RSSHub(信息聚合)
environment:
CACHE_TYPE: redis
REDIS_URL: redis://redis:6379/
depends_on:
- redis
19. Calibre-Web(电子书库)
docker run -d
-p 8083:8083
-v /srv/books:/books
--name calibre-web
linuxserver/calibre-web:latest
20. Heimdall(导航主页)
environment:
- PUID=1000
- PGID=1000
volumes:
- /srv/heimdall:/config
21. Bitwarden(密码管理)
environment:
ADMIN_TOKEN: your_secret_key
volumes:
- /srv/bitwarden:/data
22. Transmission(PT专用)
docker run -d
--name=transmission
-e PUID=1000
-e PGID=1000
-p 9091:9091
-p 51413:51413
-p 51413:51413/udp
-v /srv/downloads:/downloads
linuxserver/transmission:latest
23. Watchtower(自动更新)
docker run -d
--name watchtower
-v /var/run/docker.sock:/var/run/docker.sock
containrrr/watchtower
--cleanup
--schedule "0 0 3 * * *"
24. Redis(缓存服务)
command: redis-server --save 60 1 --loglevel warning
volumes:
- /srv/redis:/data
三、性能优化与维护
3.1 内存管理技巧
# 查看容器内存占用
docker stats --no-stream --format "table {{.Name}}t{{.MemUsage}}"
# 限制容器内存(以Jellyfin为例)
docker update --memory 256M --memory-swap 512M jellyfin
3.2 日志清理策略
# 限制日志文件大小
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
systemctl restart docker
3.3 存储管理方案
# 查看存储占用
docker system df
# 清理无用数据
docker system prune -af
四、故障排查与恢复
4.1 常见问题解决
容器启动失败:
# 查看日志
docker logs -f 容器名
# 进入调试模式
docker exec -it 容器名 /bin/sh
端口冲突:
# 查找占用端口的进程
sudo netstat -tulnp | grep :端口号
# 修改容器映射端口
docker run -p 新端口:原端口 ...
4.2 数据备份方案
# 备份容器配置
docker cp 容器名:/path/to/config /backup/
# 全量备份脚本
tar -czvf docker_backup_$(date +%Y%m%d).tar.gz /srv/*
五、终极效能测试
| 场景 | 容器数量 | CPU负载 | 内存占用 |
|---|---|---|---|
| 空闲状态 | 0 | 2% | 120MB |
| 基础服务 | 5 | 35% | 580MB |
| 全负载 | 24 | 89% | 920MB |
实测极限:
- 同时运行15个容器时系统仍稳定
- 单容器崩溃不会影响其他服务
- 冷启动时间≤45秒
结语:小设备的无限可能
通过本方案改造的玩客云,可实现:
- 7×24小时低功耗运行(年均电费<¥30)
- 家庭数字化中枢(覆盖娱乐/办公/安防场景)
- 开发测试环境(同时运行多个微服务)
注意事项:
- 避免同时启动高负载容器(如Jellyfin转码+BT下载)
- 建议每月执行
docker system prune清理 - 关键数据务必配置定期备份
附完整docker-compose模板:
https://github.com/ophub/playcloud-docker
操作验证环境:
- 玩客云V1.3(Armbian 23.08 + Docker 24.0.6)
- 测试时间:2025年1月
提示:本文最后更新于2025年2月20日,如有错误或者已经失效,请留言告知。
THE END
加入QQ群
关注微信公众号
联系我们
请求更新