關於docker容器的互通性之前在網上看了好多文章,大多都是使用第三方插件pipework之類的,具體沒試過,總感覺插件越多維護越麻煩。之前見過有人直接橋接網卡就能實現docker容器互通,於是自己研究了一下,具體配置如下。
1.首先虛擬機開啟雙網卡,都能連接外網(一定要開兩個網卡,要不然會訪問不到外網沒法下載鏡像了)
2.ip addr會顯示兩個網卡,/etc/sysconfig/network-script目錄下應該只有一個虛擬網卡我這是eth0(也可能是別的名字)
安裝yum install -y bridge-utils(這個必須裝)
3.新建ifcfg-br0,寫入信息
DEVICE="br0"
TYPE="Bridge"
ONBOOT="yes"
NM_CONTROLLED="no"
BOOTPROTO="static"
IPADDR=“10.211.55.12”//最后一位隨便寫,網段不能變
NETMASK=“255.255.255.0”//子網掩碼虛擬機可以查看
GATEWAY=“10.211.55.1”//這個想了半天沒想明白怎么看,反正好用
4.修改ifcfg-eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
NAME="eth0"
UUID="84abd5e5-5f90-4a5a-8150-c851c28b4476"
DEVICE="eth0"
ONBOOT="yes"
BRIDGE="br0"
5.記得關閉systemctl stop NetworkManager
systemctl disable NetworkManager
否則IP會分配不到
6.查看/usr/lib/systemd/system/docker.service
ExecStart最后添加變量$DOCKER_OPTS
在EnvironmentFile=-/etc/sysconfig/docker
目錄下加入DOCKER_OPTS=“-b=br0”
7.systemctl restart network
systemctl daemon-reload
systemctl restart docker
docker run -d nginx就可以訪問測試了
問題:使用過程當中發現有一個IP地址始終有問題,容器分配到了,也能ping通,端口始終無法訪問,試過多種方法無效,如果遇到此問題隨便開啟一個容器占用即可.