You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在不丢失数据的情况下更新特定Docker容器的镜像(以itzg/minecraft-bedrock-server为例)

如何在不丢失数据的情况下更新特定Docker容器的镜像(以itzg/minecraft-bedrock-server为例)

嘿,我来帮你搞定这个MC服务器更新的问题!其实核心思路就是把游戏数据和容器本身分离开——这也是Docker设计的初衷,这样不管容器怎么删更,你的存档和配置都能稳稳保留。结合你用QNAP NAS+Container Station的环境,我给你两种可行的方案,命令行和GUI都有,你选顺手的来:

方法一:用SSH命令行操作(更高效可靠)

毕竟你已经有SSH权限,用命令行处理起来会更直接:

  1. 定位并停止旧容器
    先列出所有容器,找到你的MC服务器容器的名字或ID:

    docker ps -a
    

    找到对应itzg/minecraft-bedrock-server的那一行,记下容器名(比如假设是mc-bedrock-old),然后停止它:

    docker stop mc-bedrock-old
    

    不用担心容器 shutdown,我们只是要安全备份数据。

  2. 备份数据到NAS本地
    itzg的MC基岩服镜像默认把世界存档、配置文件都存在容器内的/data目录,我们把整个目录复制到NAS的本地存储(比如/share/Public/mc-backup,你可以换成自己喜欢的路径):

    docker cp mc-bedrock-old:/data /share/Public/mc-backup
    

    等复制完成,你的所有数据就都安全存在NAS本地了。

  3. 删除旧容器并拉取最新镜像
    现在可以放心删掉旧容器了:

    docker rm mc-bedrock-old
    

    然后拉取最新版本的镜像:

    docker pull itzg/minecraft-bedrock-server
    
  4. 用新镜像创建带数据挂载的新容器
    关键来了——这次创建容器时,把刚才备份的本地目录挂载到新容器的/data路径,这样数据就和容器彻底分离了:

    docker run -d -it \
      -p 19132:19132/udp \
      -v /share/Public/mc-backup:/data \
      --name mc-bedrock-new \
      itzg/minecraft-bedrock-server
    

    解释一下参数:

    • -d -it:让容器在后台运行并保持交互模式
    • -p 19132:19132/udp:映射基岩服需要的UDP端口(这个和你之前的设置一致就行)
    • -v:把NAS本地的备份目录挂载到容器内的/data,这样新容器会直接用你旧的存档和配置
    • --name:给新容器起个好记的名字

方法二:用Container Station GUI操作(适合可视化偏好者)

如果你更习惯用QNAP的图形界面,也能一步步搞定:

  1. 停止旧容器并备份数据
    打开Container Station,找到你的MC服务器容器,点击「停止」。
    进入容器的「详情」页面,切换到「文件」标签,找到/data目录,选中后点击「下载」,把整个目录保存到NAS的本地文件夹(比如Public目录下的mc-backup)。

  2. 删除旧容器并创建新容器
    回到容器列表,删掉旧容器。
    点击「创建」,选择itzg/minecraft-bedrock-server的最新镜像(如果没自动更新,先点击「拉取」获取最新版本)。
    在「存储」设置里,点击「添加」,选择「绑定挂载」:

    • 主机路径:选择你刚才备份数据的本地目录(比如/share/Public/mc-backup
    • 容器路径:填写/data
      接着配置好端口(确保UDP 19132映射正确)和其他你之前设置的参数,最后启动新容器即可。

后续更新的简化操作

这次搞定后,以后再更新镜像就简单多了:

  • 停止当前容器:docker stop mc-bedrock-new
  • 删除容器:docker rm mc-bedrock-new
  • 拉最新镜像:docker pull itzg/minecraft-bedrock-server
  • 用之前的docker run命令重新创建容器——因为数据存在NAS本地的挂载目录里,完全不会丢失!

最后提醒一句:定期把NAS本地的mc-backup目录备份到其他存储(比如外接硬盘),双重保险更放心~

备注:内容来源于stack exchange,提问作者Evgeni Nabokov

火山引擎 最新活动