更新很简单,您只需确保保留已安装的卷。如果你在例子中使用了绑定挂载的路径 here,你只需要pull最新的镜像,stoprm当前容器,然后启动一个新的一个和以前一样的方式:

  1. # 拉取最新版本
  2. docker pull Vaultwarden/server:latest
  3. # 停止并移除旧容器
  4. docker stop vaultwarden
  5. docker rm vaultwarden
  6. # 启动一个挂载数据的新容器
  7. docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 vaultwarden/server:latest

然后访问 http://localhost:80

如果您没有为持久数据绑定挂载卷,则需要一个中间步骤,使用中间容器保存数据:

  1. # 拉取最新版本
  2. docker pull Vaultwarden/server:latest
  3. # 创建中间容器来保存数据
  4. docker run --volumes-from vaultwarden --name vaultwarden_data busybox true
  5. # 停止并移除旧容器
  6. docker stop vaultwarden
  7. docker rm vaultwarden
  8. # 启动一个挂载数据的新容器
  9. docker run -d --volumes-from vaultwarden_data --name vaultwarden -p 80:80 vaultwarden/server:latest
  10. # 可选地删除中间容器
  11. docker rm vaultwarden_data
  12. # 或者,您可以保留数据容器以备将来更新,在这种情况下,您可以跳过最后一步。

您还可以使用 Watchtower 之类的工具来自动执行更新过程。 Watchtower 可以定期检查 Docker 镜像的更新,拉取更新的镜像,并使用更新的镜像重新创建容器。

使用 docker-compose 时更新

  1. docker-compose stop
  2. docker-compose pull
  3. docker-compose start

使用 systemd 服务时更新(在本例中为 Debian/Raspbian)

  1. sudo systemctl restart vaultwarden.service
  2. sudo docker system prune -f
  3. # WARNING 这可能会删除与 Vaultwarden 无关的已停止或未使用的容器等
  4. # 小心,看看你需要哪些容器
  5. docker ps -a
  6. #显示停止的容器
  7. # 警告!这将删除:
  8. # - 所有停止的#容器
  9. # - 至少一个容器未使用的所有网络
  10. # - 所有悬空镜像
  11. # - 所有悬空构建缓存
  12. #你可以列出docker镜像
  13. docker images
  14. #在那里你会看到所有未使用的镜像
  15. #

restart 命令将停止容器,拉取最新的镜像,再次运行容器。 prune 命令将删除现在的旧容器(-f 代表:不要求确认)。

如果需要,将这些放入 cronjob 中(时间可以更改):

  1. $ sudo crontab -e
  2. 0 2 * * * sudo systemctl restart vaultwarden.service
  3. 0 3 * * * sudo /usr/bin/docker system prune -f

使用命令

which docker

如果/usr/bin/docker 不是docker的正确路径