54t23 发表于 2014-12-15 09:08:10

Docker下使用网桥形式

                      要在Docker下使用网桥形式让外网直接访问内网,需要对docker进行一些配置,实际测试如下(需要注意docker版本的问题)
# eth1:192.168.56.101
# eth2: 192.168.58.101
# 192.168.56.0/24   管理网络
# 192.168.58.0/24   数据网络,容器使用的网络
# 切换到 root 用户执行以下命令
1、配置 Linux Bridge
   brctl addbr br0
   ip addr add 192.168.58.110/24 dev br0
# 给桥设置一个 IP,这样主机可以直接访问容器
   ip link set dev br0 up
2、配置 Docker 守护进程
   echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker
   sudo service docker start
3、启动容器,设置网络模式为 none,自己配置容器网络
   sudo docker run -it --net=none ubuntu:14.04 /bin/bash
4、查看容器进程 id
   docker inspect -f '{{.State.Pid}}’ CONTAINER_ID
   pid=xxx
5、创建 namespaces 的目录
   mkdir -p /var/run/netns
   ln -s /proc/$pid/ns/net /var/run/netns/$pid
6、创建 veth 设备,分配给容器,绑定到桥
   ip link add vetha type veth peer name vethb
   brctl addif br100 vethb
   ip link set vethb up
   ip link set vetha netns $pid
   ip netns exec $pid ip link set dev vetha name eth0
   ip netns exec $pid ip link set eth0 up
   ip netns exec $pid ip addr add 192.168.58.121/24 dev eth0
   ip netns exec $pid ip route add default via 192.168.58.110
7、绑定 eth2 到 桥
   brctl addif br0 eth2
   ip addr del 192.168.58.101/24 dev eth2   # 删除 eth2 的 IP
   ip addr add 192.168.58.101/24 dev br0    # 把 eth2 的IP加到网桥中
                   

页: [1]
查看完整版本: Docker下使用网桥形式