Ubuntu下Docker固定IP配置及桥接(2)

root@Docker:~# brctl show                    #该网桥上已经连接着一个网络设备了
bridge name                bridge id              STP enabled    interfaces
docker_new0            8000.fa3ce276c3b9            no          veth17f560a

注:veth设备是成双成对出现的,一端是容器内部命名eth0,一端是加入到网桥并命名的veth17f560a(通常命名为veth*),他们组成了一个数据传输通道,一端进一端出,veth设备连接了两个网络设备    并实现了数据通信。

2)、Pipework 配置Docker固定IP
我们在自定义网桥的基础上去做固定IP配置

Pipework有个缺点就是给容器指定完固定IP,如果容器重启,那么固定IP会消失,还需要重新指定,容器量大时可写个脚本来完成

root@Docker:~#  wget https://github.com/jpetazzo/pipework/archive/master.zip #下载 pipework

root@Docker:~#  unzip master.zip            #解压

root@Docker:~# cp pipework-master/pipework  /usr/bin/                      #拷贝pipework到 /usr/bin/下

root@Docker:~# chmod +x /usr/bin/pipework    #赋予该命令执行权限

root@Docker:~# pipework docker_new0 -i eth1 $(docker run -itd -p 9197:80 centos:centos6 /bin/bash) 192.168.6.27/24@192.168.6.1 #创建容器,并指定固定IP
格式:pipework  网桥名 -i 指定在那块网卡上配置  <容器名or容器ID>  指定容器内IP/子网@网关  注:容器内网关就是物理机网桥的IP             

root@Docker:~# docker attach 2966430e2dbe    #进入新容器
 

[root@2966430e2dbe /]# ifconfig              #容器内IP为指定的IP 192.168.6.27
eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:06:05                   
          inet addr:192.168.6.7  Bcast:0.0.0.0  Mask:255.255.255.0        #docker_new0网桥创建容器时DHCP分配的IP


eth1      Link encap:Ethernet  HWaddr 82:DB:F7:A3:33:92 
          inet addr:192.168.6.27  Bcast:0.0.0.0  Mask:255.255.255.0        #pipework指定的固定IP,网桥还是docker_new0


[root@2966430e2dbe /]# route -n              #查看路由路径
Kernel IP routing table
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
0.0.0.0        192.168.6.1    0.0.0.0        UG    0      0        0 eth0
192.168.6.0    0.0.0.0        255.255.255.0  U    0      0        0 eth0
192.168.6.0    0.0.0.0        255.255.255.0  U    0      0        0 eth1


[root@2966430e2dbe /]# ping     #测试网络
PING (119.75.218.70) 56(84) bytes of data.
64 bytes from 119.75.218.70: icmp_seq=1 ttl=127 time=3.98 ms
64 bytes from 119.75.218.70: icmp_seq=2 ttl=127 time=2.98 ms


[root@2966430e2dbe /]# netstat -anptu | grep 80                              #容器内80端口已经开启
tcp        0      0 :::80                      :::*                        LISTEN      -

root@Docker:~# telnet 192.168.6.27 80        #物理机上测试指定的IP是否和映射的端口等通信正常
Trying 192.168.6.27...
Connected to 192.168.6.27.
Escape character is '^]'.

root@Docker:~# iptables-save > iptables-rules #拷贝防火墙规则到本地文件

root@Docker:~# vi iptables-rules              #打开规则文件查看
你会发现你物理机的防火墙自动添加了很多条规则,这个是容器到网桥到本地网卡到公网的地址转换通信规则

Ubuntu下Docker固定IP配置及桥接

Pipework更多命令用法请参照 :
https://github.com/jpetazzo/pipework

CentOS 6/7系列安装Docker

Docker的搭建Gitlab CI 全过程详解

Docker安装应用(CentOS 6.5_x64)

在 Docker 中使用 MySQL

在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker

Docker安装应用(CentOS 6.5_x64)

Ubuntu 14.04安装Docker 

阿里云CentOS 6.5 模板上安装 Docker

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/80db64b8e81ff49aee4ec6f9655ee3b0.html