关于Docker容器的更新。据说群辉的新版Container Manager自带更新功能。在旧版容器后面会显示【更新】,实现了一键更新。但是我折腾了老半天也没看到这个功能。只能使用最原始的方式更新。
下面以Jeckett的更新为例,详细讲解一下操作步骤
一、登录NAS
以macOS为例,打开终端,通过ssh登录NAS
#比如192.168.0.1是NAS的本地IP,Tony是用户名
ssh Tony@192.168.0.1 -p 2222
#输入密码,登录成功后切换root (密码一样)
sudo -i
查看Docker版本
docker --version
如果能看到 Docker 版本,说明已安装。
Synology NAS 高版本 DSM 自带 Docker(部分型号除外)。
QNAP 需要安装 Container Station,或者在 Linux 模式下直接安装 Docker。
二、 安装 docker-compose
docker-compose是 Docker 官方提供的一个容器编排工具,它可以帮助你用一个配置文件(通常叫docker-compose.yml)来定义和管理多个 Docker 容器。不需要每次都手动写一长串docker run ...参数。
常用命令
docker-compose up -d→ 后台启动所有服务 (如果容器不存在则根据配置信息创建,有则直接启动, 配置有变动会停止旧容器并创建新容器,配置数据不会丢失)docker-compose down→ 停止并删除容器docker-compose ps→ 查看运行中的服务docker-compose logs -f→ 查看日志docker-compose restart→ 重启服务
方法 1:使用 Python pip 安装
# 安装 pip(如果 NAS 没有 Python)
sudo apt update
sudo apt install python3-pip -y
# 安装 docker-compose
sudo pip3 install docker-compose
- 安装完成后检查:
docker-compose --version
方法 2:直接下载二进制文件(推荐)
docker-compose 本身就是一个独立可执行文件,不依赖 pip。
- 在本机下载:
curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose
这会下载一个 docker-compose 可执行文件。
- 通过群晖 File Station 上传到 NAS,比如放到
/volume1/Download:
cd /volume1/Download
sudo mv docker-compose /usr/local/bin/docker-compose
#给执行权限
sudo chmod +x /usr/local/bin/docker-compose
- 测试:
docker-compose --version
三、编写docker-compose.yml
docker-compose.yml包含了容器的端口映射、卷挂载、环境变量等信息。一个docker-compose.yml可以包含多个容器的配置信息。后续将可以通过一行命令更新全部容器。
下面是一个jackett的 docker-compose.yml 文件例子:
version: "3.9"
services:
jackett:
image: ghcr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=1026 # 替换成你 NAS 用户的 PUID
- PGID=100 # 替换成你 NAS 用户的 PGID
- TZ=Asia/Shanghai
volumes:
- $CONFIG_DIR:/config
ports:
- 9117:9117
restart: unless-stopped
如果你希望配置信息和旧版本完全一致,可以通过Container Manager查看容器设置信息
将写好的docker-compose.yml放置到容器根目录,比如/volume1/docker/jackett
然后在 SSH 里执行:
cd /volume1/docker/jackett
docker-compose up -d
以上步骤可以通过一个完整的 脚本一步执行:
#!/bin/bash
# ==========================================
# 脚本功能:
# 安装 docker-compose(官方二进制)
# 备份现有 Jackett 配置
# 拉取最新 Jackett 镜像并用 docker-compose 启动
# ==========================================
# ==== 1. 安装 docker-compose ====
echo "安装 docker-compose..."
COMPOSE_VERSION="2.25.0"
DEST="/usr/local/bin/docker-compose"
# 检查是否已安装
if command -v docker-compose &>/dev/null; then
echo "docker-compose 已安装,版本:$(docker-compose --version)"
else
sudo curl -L "https://github.com/docker/compose/releases/download/v${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o $DEST
sudo chmod +x $DEST
echo "docker-compose 安装完成,版本:$(docker-compose --version)"
fi
# ==== 2. 备份 Jackett 配置 ====
CONFIG_DIR="/volume1/docker/jackett"
BACKUP_DIR="/volume1/backup/jackett_$(date +%Y%m%d_%H%M%S)"
if [ -d "$CONFIG_DIR" ]; then
echo "备份 Jackett 配置..."
mkdir -p "$BACKUP_DIR"
cp -r "$CONFIG_DIR"/* "$BACKUP_DIR"/
echo "备份完成 -> $BACKUP_DIR"
else
echo "未找到 Jackett 配置目录:$CONFIG_DIR,跳过备份"
fi
# ==== 3. 创建 docker-compose.yml ====
COMPOSE_FILE="/volume1/docker/jackett/docker-compose.yml"
echo "创建 docker-compose.yml..."
mkdir -p "$(dirname "$COMPOSE_FILE")"
cat > "$COMPOSE_FILE" <<EOL
version: "3.9"
services:
jackett:
image: ghcr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=1026 # 替换成你 NAS 用户的 PUID
- PGID=100 # 替换成你 NAS 用户的 PGID
- TZ=Asia/Shanghai
volumes:
- $CONFIG_DIR:/config
ports:
- 9117:9117
restart: unless-stopped
EOL
echo "docker-compose.yml 已创建"
# ==== 4. 停止旧容器并启动新容器 ====
echo "升级 Jackett..."
cd "$(dirname "$COMPOSE_FILE")"
# 停止并删除旧容器(保留配置)
docker-compose down
# 拉取最新镜像并启动
docker-compose pull
docker-compose up -d
echo "Jackett 升级完成"
将脚本保存为 upgrade_jackett.sh,可以放置在NAS的任何位置
- 通过 SSH 登录 NAS,进入脚本目录。
- 给脚本执行权限:
chmod +x upgrade_jackett.sh - 执行脚本:
./upgrade_jackett.sh - 完成后打开浏览器访问: http://192.168.0.1:9117
四、常见问题
NAS无法访问dockerHub

解决方法 1:设置NAS代理
- 电脑端打开Clash,并设置允许局域网连接
- 群辉设置代理连接,地址填写电脑的本地IP,端口写clash默认的7890

解决方法2:docker安装clash
- 通过ssh安装clash
- 安装yacd,通过网页端界面设置clash的系统代理,把HTTP/HTTPS代理指向127.0.0.1:7890