没有合适的资源?快使用搜索试试~ 我知道了~
最近因为工作要求需要用学习使用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容器分配静态容器分配静态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、获取容器的进程号:
资源评论


weixin_38748210
- 粉丝: 5
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- GOAT(山羊)是基于 LlaMa 进行 SFT 的中英文大语言模型
- 借助 ChatGPT 大语言模型通过聊天机器人自动搭建 vulhub 漏洞靶机环境
- 一个 JavaScript 的简单范例程序-创建一个简单的待办事项列表(Todo List)
- 第二届广州・琶洲算法大赛智能交通 CV 模型赛题第四名方案
- 第二届广州・琶洲算法大赛智能交通 CV 模型赛题第 4 名解决方案
- 基于ChatGPT大语言模型,通过聊天机器人自动创建vulhub的漏洞靶机环境
- Python 的排序算法范例程序-实现快速排序算法
- 从零开始编写大语言模型相关所有代码用于学习
- kindeditor多图上传H5版 ,替换到原来的plugins\multiimage目录下就可用,无须修改原来的调用代码,要记得刷新缓存
- CID解码最新300-CD软件
- CID解码最新300-CD软件
- 结合大模型强大的自然语言处理能力,自动化地生成全面、高质量的测试用例
- CID解码最新300-CD软件
- MATLAB实现NMEA 0183数据可视化工具
- MATLAB实现NMEA 0183数据可视化工具
- aspmkr7_1.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
