The following starts a Bedrock Dedicated Server running a default version and exposing the default UDP port:
docker run -d -it -e EULA=TRUE -p 19132:19132/udp itzg/minecraft-bedrock-server
For Minecraft Java Edition you'll need to use this image instead:
EULA
(no default) : must be set toTRUE
to accept the Minecraft End User License AgreementVERSION
(LATEST
) : can be set to a specific server version or the following special values can be used:LATEST
: determines the latest version and can be used to auto-upgrade on container startPREVIOUS
: uses the previously maintained major version. Useful when the mobile app is gradually being upgraded across devices1.11
: the latest version of 1.111.12
: the latest version of 1.121.13
: the latest version of 1.131.14
: the latest version of 1.141.16
: the latest version of 1.16
UID
(default derived from/data
owner) : can be set to a specific user ID to run the bedrock server processGID
(default derived from/data
owner) : can be set to a specific group ID to run the bedrock server process
The following environment variables will set the equivalent property in server.properties
, where each is described here.
SERVER_NAME
SERVER_PORT
GAMEMODE
DIFFICULTY
LEVEL_TYPE
ALLOW_CHEATS
MAX_PLAYERS
ONLINE_MODE
WHITE_LIST
VIEW_DISTANCE
TICK_DISTANCE
PLAYER_IDLE_TIMEOUT
MAX_THREADS
LEVEL_NAME
LEVEL_SEED
DEFAULT_PLAYER_PERMISSION_LEVEL
TEXTUREPACK_REQUIRED
For example, to configure a flat, creative server instead of the default use:
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
- UDP 19132 : the Bedrock server port.
NOTE that you must append
/udp
when exposing the port, such as-p 19132:19132/udp
/data
: the location where the downloaded server is expanded and ran. Also contains the configuration properties fileserver.properties
You can create a named volume
and use it as:
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
When running the container on your LAN, you can find and connect to the dedicated server in the "LAN Games" part of the "Friends" tab, such as:
For more information about managing Bedrock Dedicated Servers in general, check out this Reddit post.
Assuming you started container with stdin and tty enabled (such as using -it
), you can attach to the container's console by its name or ID using:
docker attach CONTAINER_NAME_OR_ID
While attached, you can execute any server-side commands, such as op'ing your player to be admin:
op YOUR_XBOX_USERNAME
When finished, detach from the server console using Ctrl-p, Ctrl-q
The examples directory contains an example Docker compose file that declares:
- a service running the bedrock server container and exposing UDP port 19132
- a volume to be attached to the service
The service configuration includes some examples of configuring the server properties via environment variables:
environment:
EULA: "TRUE"
GAMEMODE: survival
DIFFICULTY: normal
From with in the examples
directory, you can deploy the composition by using:
docker-compose up -d
You can follow the logs using:
docker-compose logs -f bds
The examples directory contains an example Kubernetes manifest file that declares:
- a peristent volume claim (using default storage class)
- a pod deployment that uses the declared PVC
- a service of type LoadBalancer
The pod deployment includes some examples of configuring the server properties via environment variables:
env:
- name: EULA
value: "TRUE"
- name: GAMEMODE
value: survival
- name: DIFFICULTY
value: normal
The file is deploy-able as-is on most clusters, but has been confirmed on Docker for Desktop and Google Kubernetes Engine:
kubectl apply -f examples/kubernetes.yml
You can follow the logs of the deployment using:
kubectl logs -f deployment/bds