数据目录
约 1000 字大约 3 分钟 阅读量
2025-02-14
容器管理的所有 Minecraft 数据均位于容器内部的 /data 路径下,目录结构示意如下:
重要
容器路径 /data 默认声明为数据卷。若未手动挂载,Docker 将自动创建匿名卷。该匿名卷会随容器删除而销毁。
将数据目录挂载到宿主机
推荐使用 绑定挂载 ,并使用 -v
参数将宿主机目录映射到容器的 /data
目录中,在下面的示例中,路径 /home/user/minecraft-data
必须是宿主机上的目录:
-v /home/user/minecraft-data:/data
------------------------- -----
| |
| +-- 必须为 /data
|
+-- 替换为宿主机目录路径
挂载后,可以随时停止服务器,直接修改宿主机目录下的配置文件,重启后即可生效。
Rootless, Podman, SELinux, AppArmor 配置
使用 Rootless 容器(如 Podman)或启用 SELinux/AppArmor 的系统时,需在卷映射后添加 :Z
标识:
/home/user/minecraft-data:/data:Z
使用 docker compose 配置相对路径更便捷,以下示例会自动创建/挂载当前目录下的 minecraft-data
目录
docker-compose.yml
services:
mc:
image: itzg/minecraft-server
ports:
- 25565:25565
environment:
EULA: "TRUE"
tty: true
stdin_open: true
restart: unless-stopped
volumes:
# 挂载 compose 文件所在目录的 minecraft-data 目录,若没有会自己创建。
- ./minecraft-data:/data
匿名卷转命名卷操作
若初始运行未使用 -v
参数挂载,Docker 会创建一个匿名数据卷,你可通过以下步骤将匿名卷数据迁移至命名卷。
前提条件
假设原容器命名为 “mc”,请根据实际情况调整容器标识。
操作步骤:
- 停止原容器:
docker stop mc
- 使用临时容器将匿名卷的内容复制到命名卷中
docker run --rm --volumes-from mc -v mc:/new alpine cp -avT /data /new
- 使用命名卷重新创建容器:
docker run -d -it --name mc-new -v mc:/data -p 25565:25565 -e EULA=TRUE -e MEMORY=2G itzg/minecraft-server
查找匿名卷路径
执行以下命令查看匿名卷在宿主机上的装载位置,命令中输出的 Source
就是此位置。
docker inspect -f "{{json .Mounts}}" CONTAINER_NAME_OR_ID
Windows 用户注意
WSL 环境下匿名卷存储路径为:\\wsl$\docker-desktop-data\data\docker\volumes