在我使用Docker部署Velocity和BungeeCord时遇到了一些问题
BungeeCord和Velocity是什么?
能够连接多个Minecraft服务器的代理服务器
使用Docker启动
形成
version: '3'
services:
bungeecord:
container_name: test_bungee
image: itzg/bungeecord
ports:
- "10000:25577"
tty: true
stdin_open: true
restart: always
volumes:
- ./server:/server
environment:
TYPE: "BUNGEECORD"
MEMORY: "512M"
paper:
container_name: test_server
image: itzg/minecraft-server
ports:
- "10001:25565"
tty: true
stdin_open: true
restart: always
volumes:
- ./data:/data
environment:
EULA: "TRUE"
TYPE: "PAPER"
MEMORY: "2G"
ONLINE_MODE: "FALSE"
settings:
bungeecord: true
ip_forward: true
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: 127.0.0.1:10001
restricted: false
结果
在本地主机/本地回环地址127.0.0.1上是不允许的。
当从容器通信到外部时,似乎不能使用localhost或者127.0.0.1。
修改连接地址
连接到集装箱
$ docker exec -i test_server /bin/bash
确认被分配给容器的IP地址。
$ hostname -i
192.168.32.2
回到主机
复制
修改BungeeCord的config.yml文件。
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: 192.168.32.2:10001
restricted: false
最终的结果
该端口的设置好像不太好
幾個小時後…
看着许多GitHub的Issue和文章时,我注意到一个问题。连接目标是否为容器的端口?
这样做就会动起来。
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: 192.168.32.2:25565
restricted: false
addressのポートをホストのポート(10001)ではなく、コンテナのポート(25565)にしました。
来了!!!!
结论
端口转发
ports:
- "10001:25565"
docker-composeでいうこの部分です。ポートフォワーディングは、ホストipの10001に接続が来た時、コンテナipの25565に接続を流すという感じなので、直接コンテナのipアドレス(192.168.32.2)に直接接続する場合は、コンテナのポート(25565)を指定しなければならなかったのです。
额外的东西
docker-composeを使っていれば、dockerのnetworkを勝手に設定してくれるので、今回でいうpaper:25565で接続できます。paperはdocker-composeのservicesの名前です。
コンテナを作り直したときにipアドレスが変わるそうですが、その対策にもなります。
顺便提一句
这次我们启动了BungeeCord,但其他代理服务器如Velocity和Waterfall也是一样的。
反省
我完全是知識不足的
我會加以努力