
Docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是默认连接到docker0网卡上的。而docker0的IP段为172.17.0.1,如果想让容器与宿主机同一网段的其他机器访问,就必须在启动docker的时候将某个端口映射到宿主机的端口。这种方案在企业里是不会这样使用的,比较弱。
这里将通过第三方工具实现docker容器的桥接网络,并为容器分配IP。
1)物理主机的IP信息
IP:192.168.240.136 网关:192.168.240.2
2)启动docker服务,生成dcoekr0网卡
systemctl start docker
docker启动后,会自动生成dokcer0网卡。如下图:
3)停止docker服务
systemctl stop docker
4)删除docker0网卡
ip link set dev docker0 down
brctl delbr docker0 #如果没有brctl命令,请安装bridge-utils包
5)新建桥接网卡br0
brctl addbr br0
ip link set dev br0 up
ip addr add 192.168.240.136/24 dev br0
#为br0分配物理网络中的ip地址
ip adddr del 192.168.240.136/24 dev eth0 #将宿主机网卡IP清空
brctl addif br0 eth0 #将宿主机网卡挂到br0上
ip route del default #删除原路由
ip route add default via 192.168.240.2 dev br0 #为br0设置路由
6)设置docker服务启动参数
vim /etc/sysconfig/docker-network
#其他系统可能在/etc/sysconfig/docker
改成如下行:
DOCKER_NETWORK_OPTIONS="-b=br0"
7)启动docker服务
systemctl start docker
8) 安装pipework
git clone https://github.com/jpetazzo/pipework
cp ./pipework/pipework /usr/local/bin/
9) 启动容器并设置网络
docker run -itd –net=none –name=lamp centos6.5 /bin/bash
pipework br0 lamp 192.168.240.11/24@192.168.240.136
10) 进入容器查看IP
docker exec -it lamp /bin/bash
