全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解docker容器分配静态IP

最近因为工作要求需要用学习使用docker,最后卡在了网络配置这一块。默认情况下启动容器的时候,docker容器使用的是bridge策略比如:

docker run -ti ubuntu:latest /bin/bash

等效于

docker run -ti --net=bridge ubuntu:latest /bin/bash

 bridge策略下,docker容器自动为我们分配了一个IP地址,并连接到docker0的网桥上。但这里有一个问题,这个IP地址并不是静态分配的,这对我们的对容器的实例的网络管理造成一了些困难。这里笔者并不想直接给出解决方案,因为那样子并没有什么卵用,理解原理,一步一步踏实走才是。

相信看过docker介绍的读者都知道docker是借助于cGroup和namespace技术来实现资源控制和隔离的。在开始之前读者需要去看一下linux上namespace的使用,本文并不想带入太多的其它不相关的主题。好了现在假设你已经了解namespace了,那你肯定想知道docker在网络上是怎么利用namespace来做手脚的。大致过程应该和下面的一致:(下面只是个人猜测,因为笔者并没有太多时间去研究它的源码)

1、创建一个Net Namespace  netns1。

2、创建一对veth,将peer加入到netns1,将别一端接入到网桥bridge0中。

3、为这两个veth分配IP。

4、用netns1启动容器中的程序比如/bin/bash。

可惜的是,docker run并没有一个选项让我们去指定所分配的IP,因为网络的确是个大难题。那就得自己动手丰衣足食了。

从上面我们知道,docker在网络这里用到了Net namespace,veth和网桥bridge。注意如果你意图使用ip netns list去查看docker在启动容器的时候使用了那个netns,你会失望地发现没有对应netns。其实并不是没有,而是docker为了掩盖一些细节,在做完初始化工作后,docker便将这个netns从/var/run/netns中删除了,我们完全可以用下面的方式让它打回原形:

ln -s /proc/${container's pid}/ns/net /var/run/netns/${the's name you want to display}
ip netns list

好了,现在说一下我们给容器分配静态IP的思路:

1、用--net=none方式启动容器,这样容器有了自己的namespace(这一步我们无法干预的,so let it go!)

2、获取容器的进程号PID,然后根据PID将它的Net namespace打回原型。

3、创建一个bridge0,用brctl工具(可以通过安装bridge-utils工具来实现)。

4、创建一对veth:vethBridge,vethContainer,将peer端vethContainer加入到窗口的Net namespace中,将vethBridge接入到bridge0中:brctl add...

5、设置vethContainer的IP。

6、重启容器的network service。

下面以我机器为例(deepin 2015 kernel 4.5.0)

1、 启动容器:

2、获取容器的进程号:

3、根据进程号将容器的Net namespace打回原型:

4、创建网桥bridge0

5、创建veth,配置对应的veth,最后重启容器的network service

6、在容器中可以看到静态分配的IP: 192.168.9.10

注意,现在容器还不能与主机通信,因为主机没有到bridge的设备,如果需要和主机进行通信的话可以添加一对veth,将一端接入bridge。如果容器需要我外部通信的话,可以通过启用内核转发,并在iptables中添加相应的转发规则。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# docker  # 容器  # 静态ip  # docker设置静态ip  # docker静态ip  # Docker 容器指定自定义网段的固定IP/静态IP地址  # docker配置静态ip的实现示例  # 的是  # 网桥  # 好了  # 太多  # 可以通过  # 重启  # 来实现  # 创建一个  # 有一个  # 自己的  # 有什么  # 这一  # 是个  # 如果你  # 让我们  # 才是  # 你会  # 丰衣足食  # 是怎么  # 还不 


相关文章: 建站之星logo尺寸如何设置最合适?  建站之星北京办公室:智能建站系统与小程序生成方案解析  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  建站之星如何快速生成多端适配网站?  广平建站公司哪家专业可靠?如何选择?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何选择香港主机高效搭建外贸独立站?  如何配置WinSCP新建站点的密钥验证步骤?  如何通过主机屋免费建站教程十分钟搭建网站?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  定制建站策划方案_专业建站与网站建设方案一站式指南  如何通过远程VPS快速搭建个人网站?  建站之星如何优化SEO以实现高效排名?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  建站主机服务器选购指南:轻量应用与VPS配置解析  h5在线制作网站电脑版下载,h5网页制作软件?  网站制作员失业,怎样查看自己网站的注册者?  如何挑选高效建站主机与优质域名?  北京网站制作的公司有哪些,北京白云观官方网站?  如何通过.red域名打造高辨识度品牌网站?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  javascript基本数据类型及类型检测常用方法小结  装修招标网站设计制作流程,装修招标流程?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  家庭建站与云服务器建站,如何选择更优?  代刷网站制作软件,别人代刷火车票靠谱吗?  seo网站制作优化,网站SEO优化步骤有哪些?  如何获取上海专业网站定制建站电话?  建站之星CMS五站合一模板配置与SEO优化指南  如何确保FTP站点访问权限与数据传输安全?  清除minerd进程的简单方法  建站之星后台管理如何实现高效配置?  如何高效配置香港服务器实现快速建站?  如何在西部数码注册域名并快速搭建网站?  学校建站服务器如何选型才能满足性能需求?  ui设计制作网站有哪些,手机UI设计网址吗?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何高效完成独享虚拟主机建站?  ,南京靠谱的征婚网站?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  html制作网站的步骤有哪些,iapp如何添加网页?  如何在阿里云ECS服务器部署织梦CMS网站?  建站主机选购指南:核心配置与性价比推荐解析  七夕网站制作视频,七夕大促活动怎么报名?  建站之星如何实现网站加密操作?  内部网站制作流程,如何建立公司内部网站?  建站主机SSH密钥生成步骤及常见问题解答? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。