以下启动了一个运行默认版本并公开默认UDP端口的基岩专用服务器:
docker run -d -it -e EULA=TRUE -p 19132:19132/udp -v mc-bedrock-data:/data itzg/minecraft-bedrock-server
注意:如果您计划在更长的时间内运行服务器,则强烈建议使用诸如Docker Compose或Kubernetes之类的管理层来允许增量重新配置和图像升级。
将VERSION
变量设置为默认的“最新”,则可以通过重新启动容器来升级基岩服务器。在每个初创公司,如果需要,容器会检查最新版本和升级。
可以通过将VERSION
设置为“预览”来请求最新的预览版。
对于Minecraft Java版,您需要使用此图像:
ITZG/Minecraft-Server
EULA
(无默认):必须设置为TRUE
才能接受Minecraft最终用户许可协议VERSION
(默认是LATEST
):可以将其设置为特定的服务器版本,也可以使用以下特殊值:LATEST
:确定最新(非浏览)版本,可用于自动升级容器启动PREVIEW
:确定最新的预览版本,并将自动升级PREVIEW
设置为“ true”UID
(默认来自/data
所有者):可以将其设置为特定的用户ID来运行基础服务器进程GID
(默认来自/data
所有者):可以将其设置为特定的组ID来运行基础服务器进程TZ
(无默认值):可以将其设置为像America/New_York
这样的特定时区。这将为Docker容器及其日志设置时区。另外,如果要将时间与主机同步,则可以将/etc/localtime
文件从主机安装到诸如/etc/localtime:/etc/localtime:ro
。PACKAGE_BACKUP_KEEP
( 2
):保留多少个包备份以下环境变量将在server.properties
中设置等效属性。通常,每个属性都是由upper_snake_case等效配置的。
SERVER_NAME
GAMEMODE
FORCE_GAMEMODE
DIFFICULTY
ALLOW_CHEATS
MAX_PLAYERS
ONLINE_MODE
WHITE_LIST
ALLOW_LIST
SERVER_PORT
SERVER_PORT_V6
ENABLE_LAN_VISIBILITY
VIEW_DISTANCE
TICK_DISTANCE
PLAYER_IDLE_TIMEOUT
MAX_THREADS
LEVEL_NAME
LEVEL_SEED
LEVEL_TYPE
DEFAULT_PLAYER_PERMISSION_LEVEL
TEXTUREPACK_REQUIRED
CONTENT_LOG_FILE_ENABLED
CONTENT_LOG_LEVEL
CONTENT_LOG_CONSOLE_OUTPUT_ENABLED
COMPRESSION_THRESHOLD
COMPRESSION_ALGORITHM
SERVER_AUTHORITATIVE_MOVEMENT
PLAYER_POSITION_ACCEPTANCE_THRESHOLD
PLAYER_MOVEMENT_SCORE_THRESHOLD
PLAYER_MOVEMENT_ACTION_DIRECTION_THRESHOLD
PLAYER_MOVEMENT_DISTANCE_THRESHOLD
PLAYER_MOVEMENT_DURATION_THRESHOLD_IN_MS
CORRECT_PLAYER_MOVEMENT
SERVER_AUTHORITATIVE_BLOCK_BREAKING
SERVER_AUTHORITATIVE_BLOCK_BREAKING_PICK_RANGE_SCALAR
CHAT_RESTRICTION
DISABLE_PLAYER_INTERACTION
CLIENT_SIDE_CHUNK_GENERATION_ENABLED
BLOCK_NETWORK_IDS_ARE_HASHES
DISABLE_PERSONA
DISABLE_CUSTOM_SKINS
SERVER_BUILD_RADIUS_RATIO
ALLOW_OUTBOUND_SCRIPT_DEBUGGING
ALLOW_INBOUND_SCRIPT_DEBUGGING
FORCE_INBOUND_DEBUG_PORT
SCRIPT_DEBUGGER_AUTO_ATTACH
SCRIPT_DEBUGGER_AUTO_ATTACH_CONNECT_ADDRESS
SCRIPT_WATCHDOG_ENABLE
SCRIPT_WATCHDOG_ENABLE_EXCEPTION_HANDLING
SCRIPT_WATCHDOG_ENABLE_SHUTDOWN
SCRIPT_WATCHDOG_HANG_EXCEPTION
SCRIPT_WATCHDOG_HANG_THRESHOLD
SCRIPT_WATCHDOG_SPIKE_THRESHOLD
SCRIPT_WATCHDOG_SLOW_THRESHOLD
SCRIPT_WATCHDOG_MEMORY_WARNING
SCRIPT_WATCHDOG_MEMORY_LIMIT
OP_PERMISSION_LEVEL
EMIT_SERVER_TELEMETRY
MSA_GAMERTAGS_ONLY
ITEM_TRANSACTION_LOGGING_ENABLED
例如,要配置平坦的创意服务器而不是默认使用:
docker run -d -it --name bds-flat-creative
-e EULA=TRUE -e LEVEL_TYPE=flat -e GAMEMODE=creative
-p 19132:19132/udp itzg/minecraft-bedrock-server
SERVER_PORT
设置。默认情况下,IPv6端口不会公开。请注意,公开端口时必须附加/udp
,例如-p 19132:19132/udp
,并且必须在主机计算机上启用IPv4和IPv6。 /data
:扩展下载的服务器的位置并运行。还包含配置属性文件server.properties
您可以创建一个named volume
,并将其用作:
docker volume create mc-volume
docker run -d -it --name mc-server -e EULA=TRUE -p 19132:19132/udp -v mc-volume:/data itzg/minecraft-bedrock-server
如果您使用命名卷,并希望基岩进程作为非根系用户运行,则需要预先创建该卷并将其chown
到所需的用户。
例如,如果您希望BedRock服务器使用用户ID 1000和组ID 1000运行,则使用:
docker run --rm -v bedrock:/data alpine chown 1000:1000 /data
如果使用docker run
,则只需在-v
参数中引用该卷“基石”。如果使用撰写文件,请使用此类声明将卷声明为外部:
volumes :
bedrock :
external :
name : bedrock
在LAN上运行容器时,您可以在“朋友”选项卡的“ LAN游戏”部分中找到并连接到专用服务器,例如:
基岩专用服务器需要使用XUID定义权限。有各种各样的工具可以在线查找这些工具,并且当玩家加入时,它们也将打印到日志中。有3个级别的权限和3个配置每个组的选项:
OPS
用于定义服务器上的操作员。 -e OPS= " 1234567890,0987654321 "
MEMBERS
用于定义服务器上的成员。 -e MEMBERS= " 1234567890,0987654321 "
VISITORS
用于定义服务器上的访问者。 -e VISITORS= " 1234567890,0987654321 "
有两种处理白名单的方法:
首先是将ALLOW_LIST
环境变量设置为true,并在允许列表中映射。JSON文件(以前称为“ Whitelist.json”),该文件已定制为容器。
另一个是将ALLOW_LIST_USERS
环境变量设置为逗号分隔的游戏者标签用户名及其相应的XUID。每个用户名都应遵循其XUID,并由结肠隔开。服务器将使用这些详细信息与玩家匹配。
有多种工具可以在线查看XUID,并且当玩家加入服务器时,它们也将被打印到日志上。
-e ALLOW_LIST_USERS= " player1:1234567890,player2:0987654321 "
也称为行为或资源包,为了将mod添加到服务器中,您可以按照以下步骤进行操作(一个玩家睡觉)和Bedrocktweaks测试
C:UsersUSERAppDataLocalPackagesMicrosoft.MinecraftUWP_*LocalStategamescom.mojang
。如果要在不使用客户端的情况下安装它们,则应该能够将mod直接解压缩到服务器的卷中。 .mcaddon和.mcpack实际上均已更名为.zip文件。
worlds/$level-name/world_behavior_packs.json
,您需要为每个mod添加一个条目,例如上一个清单上的每个mod。逗号和双引号[]。您还可以创建一个
worlds/$level-name/world_resource_packs.json
但我已经看到将资源和行为包都放在同一JSON中效果很好
[
{
"pack_id" : "5f51f7b7-85dc-44da-a3ef-a48d8414e4d5",
"version" : [ 3, 0, 0 ]
}
]
如果您想强制所有客户端的资源包,则在
server.properties
中有一个选项texturepack-required=false
true
可以通过进入设置>存储>缓存数据,然后选择包装并单击垃圾桶来删除资源包。
有关更多信息,Foxynotail进行了一个视频,该视频在Windows上运行的服务器上进行了解释。
有关管理基岩专用服务器的更多信息,请查看此Reddit帖子。
该图像与一个名为send-command
脚本捆绑在一起,该脚本将向基岩服务器控制台发送基岩命令和参数。命令的输出仅在容器日志中可见。
例如:
docker exec CONTAINER_NAME_OR_ID send-command gamerule dofiretick false
另外,启用了stdin和tty(例如使用-it
),使用以下名称或ID附加到容器的控制台上:
docker attach CONTAINER_NAME_OR_ID
随附时,您可以执行任何服务器端命令,例如将您的播放器运算为管理:
gamerule dofiretick false
完成后,使用CTRL-P,Ctrl-Q脱离服务器控制台
示例目录包含一个示例Docker组成的文件,该文件声明:
/data
上附加到服务的卷 services :
bds :
image : itzg/minecraft-bedrock-server
environment :
EULA : " TRUE "
ports :
- " 19132:19132/udp "
volumes :
- ./data:/data
stdin_open : true
tty : true
启动服务器并在后台运行:
docker compose up -d
您可以随时使用:
docker compose logs -f
示例目录包含一个示例kubernetes清单文件,该文件声明:
POD部署包括一些通过环境变量配置服务器属性的示例:
env :
- name : EULA
value : " TRUE "
- name : GAMEMODE
value : survival
- name : DIFFICULTY
value : normal
该文件在大多数簇上都可以部署,但已在Docker for Desktop和Google Kubernetes引擎上得到确认:
kubectl apply -f examples/kubernetes.yml
您可以使用以下方式遵循部署日志
kubectl logs -f deployment/bds
@thetinkerdad提供了一个出色的教程,介绍了如何在单个端口上托管多个实例(19132),以便可以发现:https://www.youtube.com/watch?v=ds0_eszjbfs
在尝试构建此Docker映像时,请确保所有
.sh
文件具有LF
非CLRF
的行末尾序列,否则构建将失败。