Go遊戲伺服器開發的一些思考(八):Docker橋接網路及固定IP
阿新 • • 發佈:2019-01-06
為什麼需要Docker的橋接網路
有時我們需要把Docker容器暴露到某個網段,這樣就可以把一個Docker容器看成一臺物理機。這時就需要用到Docker的橋接網路。
比如 在做Redis叢集時,通常現有的Redis管理軟體會通過ssh來管理一組Redis。管理軟體為了簡化遠端登入,通常會要求Redis所在的機器(物理機、容器或者雲)就有統一的帳號、密碼、埠。而一個物理機上通常會開多個Docker Redis容器。如果能把Redis容器變成這個網段的一臺物理機,那個就便於Redis管理軟體來管理
下面以Ubuntu系統為例,記錄下Docker橋接網路的使用
配置橋接網絡卡
vi /etc/network/interfaces
auto br2 iface br2 inet static address 192.168.1.4 netmask 255.255.255.0 gateway 192.168.1.1 bridge_ports ens33 bridge_stp off dns-nameservers 8.8.8.8 192.168.1.1
以上把br2繫結到ens33網絡卡上
vi /etc/docker/daemon.json
{ "bridge": "br2" }
/etc/init.d/networking restart
/etc/init.d/docker restart
橋接網段
預設橋接IP從xxx.xxx.xxx.1開始
顯然會造成IP衝突配置固定IP段
可以給docker指定某IP段,具體涉及到IP、掩碼知識。這裡不再多述。
vi /etc/docker/daemon.json
{ "fixed-cidr": "192.168.1.100/26" }
交接網路聯通外網
vi /etc/network/interfaces
新增:
dns-nameservers 192.168.1.1 up route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.1
固定IP
安裝pipework
wget https://github.com/jpetazzo/pipework/archive/master.zip unzip master.zip cp pipework-master/pipework /usr/local/bin/ chmod +x /usr/local/bin/pipework
pipework $BRIDGE $( $DOCKER_RUN ) $IP1/[email protected]$GATEWAY
pipework $BRIDGE $NAME1 $IP1/[email protected]$GATEWAY