Docker网络配置实践:运行多个版本MineCraft Server

家里废弃的HTPC一直被作为MineCraft Server在跑着,并且我安装的是Docker环境下的MC Server,使用的镜像是:itzg/minecraft-server,在Hub上的地址见:https://hub.docker.com/r/itzg/minecraft-server/

记录一下使用pipework,让两个版本的服务器共存的方法(原来使用bridge的配置,用p参数暴露25565端口只用于一个版本的服务器)。

安装pipework
步骤很简单,下载即可使用,当然一般我们会拷到/usr/local/bin目录下:

git clone https://github.com/jpetazzo/pipework  
cp pipework/pipework /usr/local/bin/ 

准备一些必要的工具
我的Linux环境如下:

Linux sharetop 3.19.0-69-generic #77~14.04.1-Ubuntu SMP Tue Aug 30 01:29:21 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

需要安装一些东西:

apt-get install bridge-utils

先创建一个固定的网桥
pipework指令也会帮你创建,但是建议还是自己动手修改/etc/network/interfaces,创建一个固定网桥:

#auto eth0
#iface eth0 inet static
#address 192.168.191.111
#netmask 255.255.255.0
#gateway 192.168.191.1 

auto br0
iface br0 inet static
address 192.168.191.111
netmask 255.255.255.0
gateway 192.168.191.1
bridge_ports eth0
bridge_stp off       

重启服务器,仍是连192.168.191.111。

MC启动脚本
比如我的run_mc_1.8.sh也就是一句话:

docker run -d -v /home/yancheng/minecraft-data-1.8:/data -e VERSION=1.8 -e EULA=TRUE --name mc-1.8 --net=none --restart=always itzg/minecraft-server 

注意到net=none了吧,原来我可是用bridge模式跑着,用p暴露25565端口:

docker run -d -v /home/yancheng/minecraft-data-1.9:/data -e VERSION=1.9.4 -p 25565:25565 -e EULA=TRUE --name mc-1.9.4 --restart=always itzg/minecraft-server 

而如果使用pipework,则必须使用none模式。

修改容器的网络配置
使用pipework也就一句话:

sudo pipework br0 mc-1.8 192.168.191.201/24@192.168.191.1 

然后………………没有然后了,已经就OK了。

这句话表示,使用br0网桥,修改mc-1.8容器的网络配置,使用192.168.191.201为IP地址,255.255.255.0为掩码,192.168.191.1是网关。

具体可以pipework --help查看参数 。
想看看配置的效果?可以这样:

yancheng@sharetop:~$ docker exec -it mc-1.8 /bin/bash
root@21d6175a73c0:/data# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
15: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 6a:b4:38:0a:ac:7e brd ff:ff:ff:ff:ff:ff
    inet 192.168.191.201/24 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::68b4:38ff:fe0a:ac7e/64 scope link
       valid_lft forever preferred_lft forever 

存在的问题
嗯,当然有问题了,因为重启之后,网络配置会丢失的。
怎么办?
最简单的办法就是把上面那句pipework命令放到crontab定时任务里,定时执行一下就好了。

猜你喜欢

转载自blog.csdn.net/sharetop/article/details/52663384