Коротко: создайте compose.yaml с образом itzg/minecraft-server, укажите EULA=TRUE, TYPE=PAPER, VERSION и MEMORY, смонтируйте папку в /data и выполните docker compose up -d. Плагины кладите в data/plugins, команды отправляйте docker exec mc rcon-cli <команда>. Для 26.x берите тег с Java 25, для 1.21.x — с Java 21.
Зачем Docker для сервера Minecraft
- Java не нужно ставить на хост — нужная версия уже в образе, а для разных серверов можно взять разные теги.
- Всё описано в одном файле: версия, ядро, память, порт. Перенести сервер — значит скопировать папку и
compose.yaml. - Несколько серверов на одной машине не мешают друг другу: у каждого свой контейнер, порт и папка.
Если Docker вам незнаком, а сервер один, проще обычная установка — см. сервер на Linux. Docker окупается, когда серверов несколько или вы уже держите в нём сайт, базу и бота.
compose.yaml для Paper
services:
mc:
image: itzg/minecraft-server:java25 # Java 25 для 26.x; для 1.21.x — тег java21
tty: true
stdin_open: true
ports:
- "25565:25565"
environment:
EULA: "TRUE"
TYPE: "PAPER"
VERSION: "26.3"
MEMORY: "6G" # и Xms, и Xmx
STOP_DURATION: "120" # сколько ждать сохранения мира при остановке
volumes:
- ./data:/data
stop_grace_period: 2m # не меньше STOP_DURATION
restart: unless-stopped| Переменная | Что задаёт |
|---|---|
EULA | TRUE — согласие с лицензией Minecraft, без него сервер не стартует |
TYPE | Ядро: PAPER — образ сам скачает и обновит Paper |
VERSION | Версия Minecraft; без неё — самая новая, которую выпустил PaperMC |
PAPER_BUILD | Закрепить конкретную сборку Paper |
PAPER_CHANNEL | experimental, чтобы брать и экспериментальные сборки; по умолчанию — только релизные |
MEMORY | Xms и Xmx сразу, по умолчанию 1G; INIT_MEMORY и MAX_MEMORY задают их по отдельности |
USE_AIKAR_FLAGS | true — включить флаги Aikar |
STOP_DURATION | Сколько секунд ждать корректной остановки, по умолчанию 60 |
- 1
Запустите
docker compose up -d— образ скачает Paper, создаст мир и файлы сервера в./data. - 2
Посмотрите лог
docker compose logs -f mc— сервер готов, когда появится строкаDone. - 3
Настройте
server.properties, конфиги Paper и папкаplugins— в./data, как на обычном сервере. После правки —docker compose restart mc.
Java и теги образа
| Тег | Java | Для чего |
|---|---|---|
latest, stable, java25 | 25 | Paper 26.x |
java21 | 21 | Paper 1.20–1.21.11 |
java17 | 17 | Старые версии и некоторые сборки Forge |
java8 | 8 | Forge ниже 1.18 |
Память и лимиты контейнера
MEMORY задаёт кучу Java. Если вы ограничиваете память контейнера (mem_limit или лимиты оркестратора), лимит должен быть больше кучи: документация образа напоминает, что Java расходует память и сверх неё. Без явного MEMORY JVM берёт под кучу 25 % лимита контейнера. Как подобрать объём — в статье сколько памяти нужно.
Команды и консоль
| Что нужно | Команда |
|---|---|
| Одна команда | docker exec mc rcon-cli whitelist add Steve |
| Интерактивная консоль через RCON | docker exec -i mc rcon-cli |
| Подключиться к самому процессу | docker attach mc, выйти — Ctrl+P, Ctrl+Q |
Почему порт RCON нельзя открывать в интернет — в статье RCON. В compose выше опубликован только игровой порт 25565.
Остановка без потерь
Когда контейнер получает сигнал остановки, обёртка образа отправляет серверу stop и ждёт, пока он сохранит мир, — по умолчанию 60 секунд, STOP_DURATION меняет срок. Но и сам Docker ждёт ограниченное время, а потом убивает процесс. Поэтому stop_grace_period в compose (или docker stop -t) должен быть не меньше STOP_DURATION. Код выхода 137 значит, что Docker не дождался, — увеличьте оба значения.
Плагины и античит
Плагины кладут в ./data/plugins и перезапускают контейнер: добавленный на ходу плагин без перезапуска не загрузится. Образ умеет и сам скачивать плагины по списку — например, со Spigot через SPIGET_RESOURCES. Как выбирать и ставить плагины — в статье как установить плагин.
DGuard — лучший античит для современного сервера Minecraft — ставится в контейнер так же: последний релиз PacketEvents и DGuard.jar в ./data/plugins, ключ из панели — в ./data/plugins/DGuard/config.yml, затем docker compose restart mc. Контейнеру нужен исходящий HTTPS к сайту DGuard: там работает облачная проверка с нейросетью боя AI Combat.
Частые вопросы
Как запустить Paper в Docker?
Образ itzg/minecraft-server с переменными EULA=TRUE, TYPE=PAPER и VERSION, папка с данными — в /data, порт 25565 опубликован. Образ сам скачает Paper нужной версии.
Как отправить команду серверу в Docker?
docker exec mc rcon-cli <команда> — RCON в образе включён по умолчанию. Для интерактивной консоли — docker exec -i mc rcon-cli.
Почему после docker stop мир откатился?
Docker убил сервер раньше, чем тот сохранился. Увеличьте stop_grace_period в compose (или -t у docker stop) и STOP_DURATION образа.
Какой тег образа взять?
Для Paper 26.x — java25 (или latest), для 1.21.x — java21. Для старых Forge-сборок образ предлагает теги с Java 17 и 8.
Источники
- itzg/minecraft-server: документация
- itzg/minecraft-server: Paper
- itzg/minecraft-server: память и флаги JVM
- itzg/minecraft-server: версии Java и теги
- itzg/minecraft-server: команды и rcon-cli
- itzg/minecraft-server: STOP_DURATION
- Docker Compose: stop_grace_period
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf