设为首页 收藏本站
查看: 1541|回复: 0

[经验分享] 利用pipework为docker容器设置固定IP

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-5-26 15:06:21 | 显示全部楼层 |阅读模式
利用pipework为docker容器设置固定IP
  标签: dockerpipeworkip
  

DSC0000.jpg 分类:

  云计算(8) DSC0001.jpg
版权声明:欢迎转载
      今天介绍如何在redhat/centos7系列机器上使用pipework为docker启动的容器指定一个固定ip,我们知道默认情况下,docker会使用
bridge网络模式为每一个启动的容器动态分配一个IP,以172.17.0.1为网关,172.17.0.2,172.17.0.3依次类推作为容器的ip,这样也算是
每个容器有了ip,当下次启动多个容器的时候IP还是会按照这种方式分配,表面上还是一个固定IP的方式,但是这种方式对容器启动顺序
有严格的要求。还有一种方式就是通过人为指定IP的方式,这种方式就是今天讲的利用pipework为容器指定IP。
    启动容器时可以通过--net=none指定容器网络模式。有四种网络模式可以选择:host,container,none,bridge(默认),如果不设置这个参数,
那么默认就是bridge的模式,采用dhcp的方式分配IP。使用pipework为容器指定ip,对宿主机有要求,需要宿主机有网桥,对redhat7可以
使用yum install bridge-utils来安装网桥,安装完成之后设置网桥的IP就可以了。
    下面一步一步来通过pipework为docker容器指定ip(前提是机器上已经安装了docker服务,并且服务开启,有镜像可使用):
    第一步、安装网桥设备;
     yum install -y bridge-utils
    安装完毕即可在命令行下通过brctl 命令查看网桥
    第二步、设置网络地址,我们假定宿主机是固定IP,并设置了网关;
    vi /etc/sysconfig/network-scripts/ifcfg-eno16777728
    TYPE=Ethernet
    BOOTPROTO=none
    DEFROUTE=yes
    PEERROUTES=yes
    PEERDNS=yes
    NAME=eno16777728
    UUID=00f2e830-ed07-4ace-9e54-56a325e3a690
    ONBOOT=yes
    #IPADDR0=192.168.61.150
    #PREFIX0=24
    #GATEWAY0=192.168.61.2
    #DNS1=192.168.61.2
    HWADDR=00:0C:29:F7:22:81
    BRIDGE="br-ex"

     vi /etc/sysconfig/network-scripts/ifcfg-br-ex
     TYPE=Bridge
     BOOTPROTO=static
     IPADDR=192.168.61.150
     NETMASK=255.255.255.0
     GATEWAY=192.168.61.2
     PREFIX=24
     DNS1=192.168.61.2
     NAME=br-ex
     ONBOOT=yes
     DEVICE=br-ex

    以上修改即为设置IP,设置完毕可以通过命令service network restart重启网络
   [root@docker ~]# brctl show
   bridge name     bridge id               STP enabled     interfaces
   br-ex           8000.000c29f72281       no              eno16777728
                                                                               veth1pl90365
   docker0         8000.0242dda719e2       no

   

  第三步、启动docker容器并指定网络模式为none


   [root@docker ~]# docker images
   REPOSITORY            TAG                IMAGE ID               CREATED                        SIZE
   docker.io/zookeeper   latest              19604ac4a163        Less than a second ago   143 MB
   redis                           latest               07818b5b6de8        8 hours ago                      482.9 MB

   [root@docker ~]# docker run -it -d --net=none --name ip-test redis /bin/bash
   [root@docker ~]# docker ps
   CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
     4190f301a367        redis               "/bin/bash"         55 minutes ago      Up 55 minutes                           ip-test

   

    第四步、获取pipework可执行程序


    [root@docker ~]# git clone https://github.com/jpetazzo/pipework.git
    [root@docker ~]# cd pipework/
    [root@docker pipework]# ls
    docker-compose.yml  doctoc  LICENSE  pipework  pipework.spec  README.md
    [root@docker ~]# cd ..

    [root@docker ~]# cp -rp pipework/pipework /usr/local/bin


    第五步、设置docker容器IP


    [root@docker ~]# pipework br-ex ip-test 192.168.61.100/24@192.168.61.2


    第六步、验证IP设置是否正确


    [root@docker ~]# ping 192.168.61.100
    PING 192.168.61.100 (192.168.61.100) 56(84) bytes of data.
    64 bytes from 192.168.61.100: icmp_seq=1 ttl=64 time=0.206 ms
    64 bytes from 192.168.61.100: icmp_seq=2 ttl=64 time=0.081 ms
    ^C
    --- 192.168.61.100 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 0.081/0.143/0.206/0.063 ms


    补充:


    1、设置宿主机网桥IP地址的时候就是将原来网卡eno16777728的固定IP地址设置到br-ex网桥上,把网卡eno16777728IP和网关子网掩码
等都注释掉。有的机器上网卡可能叫eno16777736,根据具体网卡来修改配置文件。

    2、网桥br-ex的名字可以随便叫,叫br0也可以,就是对应配置文件名称就必须是ifcfg-br0,类型为Bridge。
    3、网桥设置的网关,我的机器是192.168.61.2,这个是安装虚拟机时vm默认设置的,有的机器网关为192.168.xx.1,最后对docker容器设置
IP时需要指定192.168.xx.yy/24@192.168.xx.1,@后面就是指定宿主机的网关,这里一定要注意,否则网络不通。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481483-1-1.html 上篇帖子: docker 容器固定ip 下篇帖子: Docker 容器的资源限制 cgroup(九)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表