方法一:Stack(docker compose)
左侧菜单 Stacks → 点进要更新的 Stack
切到 Editor 标签
如果 compose 里用的是固定版本号,先把
image:的 tag 改成新版本(用latest则不用改)拉到页面底部,打开 Re-pull image and redeploy 开关
点 Update the stack
Portainer 会重新拉取镜像并重建容器,volume 里的数据不受影响。
方法二:单个容器(非 Stack 创建的)
Containers → 点进目标容器
点顶部的 Recreate
打开 Pull latest image 开关
点 Recreate
注意:这种方式只会拉取容器当前用的那个 tag,想换版本需要在 Duplicate/Edit 里改镜像名。
方法三:CLI(SSH 到宿主机)
# 找到 Portainer 保存的 compose 文件(stack 编号看 Stacks 页面 URL 里的 id)
cd /var/lib/docker/volumes/portainer_data/_data/compose/<stack_id>
docker compose pull
docker compose up -d
如果 Portainer 数据目录不在默认位置,先 docker volume inspect portainer_data 查看实际路径。这种方式更新后,Portainer 里的 Stack 状态仍然正常,但 Editor 里的 compose 内容不会自动同步,改了配置的话还是建议用方法一。
清理旧镜像
docker image prune -f
或在 Portainer 的 Images 页面点 Remove 删除标记为 unused 的镜像。
更新 Portainer 自己
docker stop portainer && docker rm portainer
docker pull portainer/portainer-ce:latest
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
只要 portainer_data 这个 volume 保留,配置和用户都不会丢。
你是要更新 Stack 里的容器,还是 Portainer 本身?如果是特定的某个应用,告诉我,我可以给出更具体的步骤。
评论区