1. 程式人生 > >Go遊戲伺服器開發的一些思考(八):Docker橋接網路及固定IP

Go遊戲伺服器開發的一些思考(八):Docker橋接網路及固定IP

為什麼需要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

參考文件