Serwer Minecraft w Docker
Jak uruchomic serwer Minecraft w kontenerze Docker z Docker Compose - od instalacji, przez konfiguracje, po kopie zapasowe i zarzadzanie wieloma serwerami.
Czym jest Docker?
Docker to platforma konteneryzacji, która pozwala uruchamiac aplikację w izolowanych, lekkich srodowiskach zwanych kontenerami. Kontener to cos między maszyna wirtualna a procesem systemowym - ma własny system plikow, siec i zasoby, ale wspoldziela jadro systemu operacyjnego z hostem, co czyni go znacznie lzejszym niz pełna maszyna wirtualna.
Dlaczego warto używać Dockera do serwera Minecraft?
- Izolacja - serwer MC działa w odizolowanym środowisku, nie koliduje z innymi uslugami na maszynie
- Powtarzalnosc - ten sam obraz Dockera działa identycznie na każdym serwerze, niezaleznie od systemu hosta
- Łatwe aktualizacje - zmiana wersji MC to zmiana jednej linii w konfiguracji
- Automatyczne restarty - Docker restartuje kontener automatycznie po crashu
- Multi-serwer - uruchamianie wielu serwerow MC na jednej maszynie bez konfliktow portow
- Kopie zapasowe - wolumeny Dockera ulatwiaja tworzenie kopii zapasowych
Docker jest szczególnie przydatny, gdy zarzadzasz kilkoma serwerami Minecraft lub chcesz miec pełna kontrole nad srodowiskiem uruchomieniowym. Jeśli stawiasz pierwszy serwer i nie znasz Dockera, możesz również zaczac od tradycyjnej metody.
Instalacja Dockera
Docker jest dostępny na wszystkie popularne systemy operacyjne. Poniżej znajdziesz instrukcję instalacji dla najpopularniejszych platform serwerowych.
Ubuntu / Debian
Na serwerach z Ubuntu lub Debian (najpopularniejsze systemy dla serwerow MC) instalacja wyglada nastepujaco:
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker patrykraba Ostatnia komenda dodaje Twojego użytkownika do grupy docker, dzięki czemu nie musisz używać sudo przy każdym poleceniu. Po wykonaniu tej komendy wyloguj się i zaloguj ponownie.
CentOS / RHEL / AlmaLinux
sudo dnf install -y docker docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker patrykraba Windows / macOS (do testow)
Na Windowsie i macOS zainstaluj Docker Desktop z oficjalnej strony docker.com. Docker Desktop zawiera zarowno silnik Dockera, jak i Docker Compose. Pamietaj, ze Docker Desktop na Windows wymaga WSL2 (Windows Subsystem for Linux).
Weryfikacja instalacji
docker --version
docker compose version Obie komendy powinny wyswietlic numery wersji. Jeśli docker compose nie działa, sprobuj docker-compose (z myslnikiem) - to starsza wersja standalone.
Pierwszy kontener Minecraft
Najprostszy sposob uruchomienia serwera Minecraft w Dockerze to uzycie obrazu itzg/minecraft-server - najpopularniejszego i najlepiej utrzymywanego obrazu Docker dla serwera MC. Obraz obsługuje Vanilla, Paper, Spigot, Purpur, Forge, Fabric i wiele innych platform.
docker run -d --name minecraft -p 25565:25565 -e EULA=TRUE -e TYPE=PAPER -e VERSION=1.21.4 -e MEMORY=4G -v mc-data:/data itzg/minecraft-server Wyjasnienie parametrow:
| Parametr | Znaczenie |
|---|---|
-d | Uruchomienie w tle (detached mode) |
--name minecraft | Nazwa kontenera (do zarzadzania) |
-p 25565:25565 | Mapowanie portu hosta na port kontenera |
-e EULA=TRUE | Akceptacja EULA Mojang (wymagane) |
-e TYPE=PAPER | Typ serwera (PAPER, SPIGOT, PURPUR, FABRIC, VANILLA) |
-e VERSION=1.21.4 | Wersja Minecraft |
-e MEMORY=4G | Pamiec RAM przydzielona serwerowi |
-v mc-data:/data | Wolumen do przechowywania danych serwera |
Po uruchomieniu sprawdź logi serwera:
docker logs -f minecraft Poczekaj, az zobaczysz komunikat Done! For help, type "help" - serwer jest gotowy do gry. Polacz się z adresem localhost:25565 (lub IP serwera, jeśli uruchamiasz zdalnie).
Docker Compose
Docker Compose to narzędzie do definiowania i uruchamiania wielokontenerowych aplikacji Docker za pomoca pliku YAML. Zamiast dlugich komend docker run, cała konfiguracja serwera znajduje się w jednym pliku docker-compose.yml.
Utwórz plik docker-compose.yml w wybranym katalogu:
services:
minecraft:
image: itzg/minecraft-server
container_name: minecraft-survival
ports:
- "25565:25565"
environment:
EULA: "TRUE"
TYPE: PAPER
VERSION: "1.21.4"
MEMORY: 4G
VIEW_DISTANCE: 8
SIMULATION_DISTANCE: 5
MAX_PLAYERS: 50
MOTD: "Moj serwer Minecraft"
DIFFICULTY: hard
SPAWN_PROTECTION: 0
ENABLE_COMMAND_BLOCK: "true"
SPIGET_RESOURCES: "28140,81534"
volumes:
- ./data:/data
restart: unless-stopped
tty: true
stdin_open: true Uruchomienie serwera z Docker Compose:
docker compose up -d Najważniejsze komendy Docker Compose:
| Komenda | Opis |
|---|---|
docker compose up -d | Uruchomienie serwera w tle |
docker compose down | Zatrzymanie i usuniecie kontenera |
docker compose logs -f | Podglad logow na zywo |
docker compose restart | Restart kontenera |
docker compose exec minecraft rcon-cli | Otwarcie konsoli serwera (RCON) |
docker compose pull | Pobranie najnowszej wersji obrazu |
Parametr SPIGET_RESOURCES pozwala automatycznie pobierac pluginy ze SpigotMC po ID zasobu. W przykladzie powyżej 28140 to LuckPerms, a 81534 to Chunky. Pełna lista obslugiwanych zmiennych znajduje się w dokumentacji obrazu itzg/minecraft-server.
Wolumeny i dane
Wolumeny (volumes) to mechanizm Dockera do trwalego przechowywania danych. Bez wolumenu wszystkie dane serwera (świat, pluginy, konfiguracja) zostana utracone po usunieciu kontenera. Istnieja dwa typy wolumenow:
Bind mount (katalog na hoscie)
Mapuje katalog z systemu hosta do kontenera. Dane sa bezpośrednio dostępne na dysku hosta - możesz je przegladac, edytować i backupować standardowymi narzędziami.
volumes:
- ./data:/data # katalog ./data na hoscie = /data w kontenerze
- ./plugins:/plugins # osobny katalog na pluginy Struktura katalogu ./data po uruchomieniu serwera:
data/
world/ # świat Overworld
world_nether/ # Nether
world_the_end/ # End
plugins/ # pluginy i ich konfiguracja
server.properties # konfiguracja serwera
paper.yml # konfiguracja Paper
bukkit.yml # konfiguracja Bukkit
logs/ # logi serwera Named volume (wolumen Dockera)
Zarzadzany przez Dockera, przechowywany w wewnetrznym katalogu Dockera. Wygodniejszy w zarzadzaniu, ale mniej dostępny bezpośrednio:
volumes:
- mc-data:/data
volumes:
mc-data: Rekomendacja: używaj bind mount dla serwerow Minecraft. Daje to pełny dostep do plikow serwera, co ulatwia edycje konfiguracji, instalacje pluginow i tworzenie kopii zapasowych.
Zmienne środowiskowe
Obraz itzg/minecraft-server obsługuje setki zmiennych środowiskowych, które pozwalaja skonfigurowac serwer bez recznej edycji plikow. Oto najważniejsze:
| Zmienna | Domyslna | Opis |
|---|---|---|
TYPE | VANILLA | Typ serwera: VANILLA, PAPER, SPIGOT, PURPUR, FABRIC, FORGE |
VERSION | LATEST | Wersja Minecraft (np. 1.21.4, 1.20.6) |
MEMORY | 1G | Pamiec RAM (np. 2G, 4G, 8G) |
DIFFICULTY | easy | Poziom trudności: peaceful, easy, normal, hard |
MAX_PLAYERS | 20 | Maksymalna liczba graczy |
VIEW_DISTANCE | 10 | Zasięg renderowania chunkow |
ONLINE_MODE | true | Weryfikacja kont Mojang (wyłącz tylko za proxy typu Velocity) |
OPS | - | Lista operatorow (np. "TwojNick,DrugaNick") |
WHITELIST | - | Lista graczy na whitelist |
SEED | - | Seed świata |
ICON | - | URL do ikony serwera (64x64 PNG) |
SPIGET_RESOURCES | - | ID pluginow ze SpigotMC do automatycznego pobrania |
MODRINTH_PROJECTS | - | Slug pluginow z Modrinth do automatycznego pobrania |
Pełna lista zmiennych środowiskowych jest dostępna w dokumentacji itzg/minecraft-server. Obraz obsługuje również automatyczne pobieranie modow z CurseForge i Modrinth, co czyni go idealnym do serwerow moddowanych (Fabric, Forge).
Multi-serwer w Docker Compose
Jednym z najwiekszych atutow Dockera jest możliwość uruchomienia wielu serwerow Minecraft na jednej maszynie. Każdy serwer działa w osobnym kontenerze z własnym portem, danymi i konfiguracja.
services:
survival:
image: itzg/minecraft-server
container_name: mc-survival
ports:
- "25565:25565"
environment:
EULA: "TRUE"
TYPE: PAPER
VERSION: "1.21.4"
MEMORY: 4G
MOTD: "Survival - minecraft.pl"
DIFFICULTY: hard
volumes:
- ./survival-data:/data
restart: unless-stopped
creative:
image: itzg/minecraft-server
container_name: mc-creative
ports:
- "25566:25565"
environment:
EULA: "TRUE"
TYPE: PAPER
VERSION: "1.21.4"
MEMORY: 2G
MOTD: "Creative - minecraft.pl"
GAMEMODE: creative
FORCE_GAMEMODE: "true"
volumes:
- ./creative-data:/data
restart: unless-stopped
minigames:
image: itzg/minecraft-server
container_name: mc-minigames
ports:
- "25567:25565"
environment:
EULA: "TRUE"
TYPE: PAPER
VERSION: "1.21.4"
MEMORY: 3G
MOTD: "Minigry - minecraft.pl"
volumes:
- ./minigames-data:/data
restart: unless-stopped Każdy serwer ma przypisany inny port na hoscie (25565, 25566, 25567), ale wewnątrz kontenera wszystkie usluguja na standardowym porcie 25565. Gracze lacza się podając adres z odpowiednim portem, np. minecraft.pl:25566 dla serwera Creative.
Jeśli chcesz użyć jednego adresu (bez podawania portow), skonfiguruj proxy typu Velocity lub BungeeCord. Możesz je również uruchomic jako kontener Docker - więcej o tym w poradniku Reverse Proxy dla Minecraft.
Kopie zapasowe
Regularne kopie zapasowe sa kluczowe dla każdego serwera. Docker ulatwia ten proces dzięki wolumenom i możliwości dostepu do danych serwera z poziomu hosta.
Prosty skrypt backupu
#!/bin/bash
# backup-mc.sh
DATE=2026-03-18_12-00
BACKUP_DIR=/home/minecraft/backups
DATA_DIR=/home/minecraft/mc-server/data
# Wyslij komende save-off do serwera
docker compose exec minecraft rcon-cli save-off
docker compose exec minecraft rcon-cli save-all
# Poczekaj na zapisanie
sleep 5
# Utworz archiwum
tar -czf /mc-backup-.tar.gz -C .
# Włącz zapis
docker compose exec minecraft rcon-cli save-on
# Usun backupy starsze niz 7 dni
find -name "mc-backup-*.tar.gz" -mtime +7 -delete
echo "Backup ukoczony: mc-backup-.tar.gz" Dodaj skrypt do crontaba, aby tworzyl kopie automatycznie co 6 godzin:
crontab -e
# Dodaj linie:
0 */6 * * * /home/minecraft/backup-mc.sh Obraz itzg/mc-backup
Autorzy obrazu itzg/minecraft-server udostepniaja również dedykowany obraz do kopii zapasowych, który można dodać do Docker Compose:
services:
minecraft:
image: itzg/minecraft-server
# ... konfiguracja jak wyżej ...
volumes:
- ./data:/data
backup:
image: itzg/mc-backup
environment:
BACKUP_INTERVAL: "6h"
RCON_HOST: minecraft
RCON_PASSWORD: ""
PRUNE_BACKUPS_DAYS: 7
volumes:
- ./data:/data:ro
- ./backups:/backups
depends_on:
- minecraft Ten kontener automatycznie tworzy kopie zapasowe co 6 godzin i usuwa stare backupy po 7 dniach. Więcej o strategiach backupu znajdziesz w poradniku Kopie zapasowe serwera.
Podsumowanie
Docker to potężne narzędzie do uruchamiania serwerow Minecraft, szczególnie gdy potrzebujesz izolacji, latowych aktualizacji lub zarzadzasz wieloma serwerami. Obraz itzg/minecraft-server upraszcza konfiguracje do jednego pliku YAML, a Docker Compose pozwala zarzadzac całym ekosystemem jednym poleceniem.
Powiązane poradniki:
- Jak założyć serwer Minecraft - tradycyjna metoda bez Dockera
- Panel Pterodactyl - panel webowy do zarzadzania serwerami (tez używa Dockera)
- Reverse Proxy - Nginx/Caddy przed serwerem MC
- Optymalizacja serwera - jak zoptymalizowac wydajność
- Kopie zapasowe - strategie backupu danych
- Serwer Fabric - moddowany serwer w Dockerze
- Diagnostyka lagu - monitoring wydajności