如何在不丢失数据的情况下更新特定容器的图像?

如何在不丢失数据的情况下更新特定容器的图像?

我在 Docker 容器(镜像 itzg/minecraft-bedrock-server)中运行 Minecraft Bedrock 服务器。我拉取了镜像的较新版本,但容器仍在使用旧版本。我在网上找到的手册说我必须用新镜像创建一个新容器。如果我删除旧容器,我会丢失配置和世界。我知道如何从容器中复制文件,但我不知道如何复制它们安全地到新容器。我猜想在复制之前应该停止 Minecraft 服务器,但是当我停止服务器时,容器会自动关闭。

更新我的 Minecraft 服务器的正确方法是什么?

环境:在 NAS QNAP TS-664 上运行的 Linux 发行版。我使用 Container Station 作为 docker 的 GUI,并且可以通过 SSH 访问该设备。

答案1

我了解了体积Docker 存储页面默认情况下,每个新容器都会创建一个匿名(即具有随机生成的名称)卷。卷只是 Docker 管理的一个目录,特定容器会将其数据保存在其中。可以创建一个具有有意义名称的单独卷,然后将其用作新容器的指定卷。

我如何解决我的问题:

  • 为我的 Minecraft 服务器创建了一个具有有意义名称的专用卷。
  • 找到新卷的完整路径。
  • 找到了我的旧容器的卷名(它是一个随机生成的长字符串)及其完整路径。
  • 将数据从旧卷复制到新卷。
  • 使用新图像和我的新专用卷创建了一个新容器(可以选择分配任何卷)。

下次当我需要更新我的服务器时,我只需重复最后一步 - 创建新的容器。

相关内容