如何手动给Docker容器设置静态IP

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

要点:

1.首先需要在宿主机上虚拟出来一个真实可用桥接网卡比如br0

2.docker启动的时候默认使用br0进行桥接网络

3.创建docker容器的时候使用--net=none模式

4.手动为每个创建的容器生成静态ip。但是ip每次在重启容器的时候就会失效

这样的方式其实也是必须自己维护一个ip资源池,不然的话可能ip有问题就会导致不能访问

其实还是利用了docker桥接网络的模式,在宿主机创建一对虚拟网卡,然后将一块桥接到本地网桥上,经另外一块网卡通过容器的命名空间绑定到该容器上,然后对容器 命名空间中的网卡进行设置ip。

理解了netns相应的原理之后可以进行模拟实践:

# docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
jdk6-tomcat6-sshd-new     latest              ee3e2b60058d        4 days ago          970.3 MB创建一个无网络环境的容器sshd-test,该容器创建好后默认只会有一个lo回环网口。
# docker run -itd --name sshd-test -h testssh --net=none jdk6-tomcat6-sshd-new 
3ceb61136590f1362be67f1911591d0b3ca41657c6b33f45982b0df4489f5f73获取该容器的PID为13157,后面会用到
# docker inspect -f "{{.State.Pid}}" 3ceb61136590f1362be67f1911591d0b3ca41657c6 
13157添加一对虚拟网卡,分别为veth_3ceb6和eth0
# ip link add veth_3ceb6 type veth peer name eth0
将虚拟网卡veth_3ceb6桥接到br0上
# brctl addif br0 veth_3ceb6 
激活veth_3ceb6网卡,并容器内部的网卡eth0绑定到该容器的网络命名空间内
# ip link set veth_3ceb6 up
# ip link set eth0 netns 13157
将该容器的网络命名空间暴露出来
# mkdir -p /var/run/netns
# ln -s /proc/13157/ns/net /var/run/netns/13157 此时查看该容器就会发现已经多了一块网卡eth0@if850
# docker exec sshd-test ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
849: eth0@if850: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN qlen 1000link/ether 46:0a:e8:5b:ac:c0 brd ff:ff:ff:ff:ff:ff查看网络状况,新加的网卡名称为eth0
# docker exec sshd-test ifconfig -a 
eth0      Link encap:Ethernet  HWaddr 46:0A:E8:5B:AC:C0  BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)通过netns激活该容器内部的eth0网卡,并添加网络信息
# ip netns exec 13157 ip link set dev eth0 name eth0
# ip netns exec 13157 ip link set eth0 up
# ip netns exec 13157 ip addr add 10.0.0.2/23 dev eth0
# ip netns exec 13157 ip route add default via 10.0.0.254
完成最后的网络信息的添加后,就可以实现给该容器附加一个独立vlan中的网络。

以上操作相当于是手工给容器设置了一个网络栈,并通过netns将可用的IP附加到容器内部,以实现最基本的容器内部固定ip,且和宿主机共享vlan。

参考文档: https://yaxin-cn.github.io/Docker/docker-container-use-static-IP.html https://www.xiaomastack.com/2015/02/06/docker-static-ip/ http://blog.csdn.net/samxx8/article/details/46776073

转载于:https://my.oschina.net/xxbAndy/blog/819578

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

的函数原型_JS基础函数、对象和原型、原型链的关系

JS的原型、原型链一直是比较难理解的内容&#xff0c;不少初学者甚至有一定经验的老鸟都不一定能完全说清楚&#xff0c;更多的"很可能"是一知半解&#xff0c;而这部分内容又是JS的核心内容&#xff0c;想要技术进阶的话肯定不能对这个概念一知半解&#xff0c;碰到…

python字符串基本操作

直接上图&#xff1a; ispace()是否为空格 isupper()与islower是否为大写或小写 isdigit是否为数字 isalpha是否为字母 isalnum()是否为字母与数字混合体 startswith()与endswith()判断是否以什么开始&#xff0c;以什么结尾转载于:https://www.cnblogs.com/bestSmile/p/405550…

迁移学习自我学习

最近在看Ng的深度学习教程&#xff0c;看到self-taught learning的时候&#xff0c;对一些概念感到很陌生。作为还清技术债的一个环节&#xff0c;用半个下午的时间简单搜了下几个名词&#xff0c;以后如果会用到的话再深入去看。 监督学习在前一篇博客中讨论过了&#xff0c;这…

MTV: Django眼中的MVC

URLconfMTV&#xff1a;Django眼中的MVC MVC是众所周知的模式&#xff0c;即&#xff1a;将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中&#xff1a;M 管理应用程序的状态&#xff08;通常存储到数据库中&#xff09;&#xff0c;并约束改…

createbitmap导致的内存泄漏如何处理_C++ 如何避免内存泄漏,一篇就够

前言近年来&#xff0c;讨论 C 的人越来越少了&#xff0c;一方面是由于像 Python&#xff0c;Go 等优秀的语言的流行&#xff0c;另一方面&#xff0c;大家也越来越明白一个道理&#xff0c;并不是所有的场景都必须使用 C 进行开发。Python 可以应付大部分对性能要求不高的场景…

Visio绘制功能分解图

为什么要绘制功能分解图&#xff1f; 对于编程人员来说&#xff0c;具体分配任务的时候&#xff0c;必须知道自己要做什么&#xff0c;必须了解系统的大体框架。功能分解图可以帮助我们理清程序的框架&#xff0c;便于大局观的掌握。 用Visio2010创建功能分解图 1、选择模版 2、…

Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具(转)

转自&#xff1a;http://www.csdn.net/article/2013-05-02/2815116-introduce-from-mozilla-heka-go摘要&#xff1a;一直崇尚开源的Mozilla近日释放了Heka测试版——插件架构&#xff0c;Go编写。在支持使用Go扩展功能的同时&#xff0c;还通过允许“Sandboxed Filters”提供了…

cocos2d学习笔记2——学习资源

1. 视频 找了好几个视频&#xff0c;有一些讲得好的文件资源没有&#xff0c;后来终于找到一个讲得不错还有文件资源的&#xff0c;还有高清下载地址&#xff0c;虽然是2.2版本的&#xff0c;但是确实能学到不少东西&#xff0c;对用cocos2d做游戏有了基本的印象&#xff0c;对…

环境变量_配置JAVA环境变量

本文标识 : J00001本文编辑 : YiKi编程工具 : IDEA阅读时长 : 3分钟什么是环境变量?环境变量是在操作系统中一个具有特定名字的对象&#xff0c; 它包含了一个或者多个应用程序所将使用到的信息。为什么要配置环境变量?为了方便在控制台编译和运行java程序&#xff0c;不…

分布式消息队列 Kafka

分布式消息队列 Kafka 2016-02-25 杜亦舒Kafka是一个高吞吐量的、分布式的消息系统&#xff0c;由Linkedin开发&#xff0c;开发语言为scala具有高吞吐、可扩展、分布式等特点 适用场景 活动数据统计活动数据包括页面访问量&#xff08;Page View&#xff09;、被查看内容方面的…

漫游飞行_手机“飞行模式”为何没被淘汰?内行人坦言:其实是你不会用!

随着科技的不断创新&#xff0c;目前市面上出现的手机款式多种多样&#xff0c;品牌也非常多&#xff0c;有华为、苹果、三星和小米等等。手机的屏幕也是五花八门&#xff0c;有刘海屏、水滴全面屏等&#xff0c;这些屏幕之间都各有不同。而且手机的更新换代速度很快&#xff0…

multiselect多选下拉框

具体实现 <input type"hidden" id"q_dueDay" name"q_dueDay" value"${baseQueryBean.q_dueDay}">//这个为隐藏域后台直接使用这个为参数 <select id"example" name"example" multiple"multiple&qu…

scikit-learn点滴

scikit-learn点滴 scikit-learn是非常漂亮的一个机器学习库,在某些时候,使用这些库能够大量的节省你的时间,至少,我们用Python,应该是很难写出速度快如斯的代码的. scikit-learn官方出了一些文档,但是个人觉得,它的文档很多东西都没有讲清楚,它说算法原理的时候,只是描述一下,除…

怎样搭建Android开发平台(转)

Android是基于Linux内核的软件平台和操作系统&#xff0c;是Google在2007年11月5日公布的手机系统平台&#xff0c;早期由Google开发&#xff0c;后由开放手机联盟&#xff08;Open Handset Alliance&#xff09;开发。 它采用了软件堆层&#xff08;software stack&#xff0c…

subject.login(token)是如何确认账号密码的_教你如何删除、关闭、注销微信小程序...

微信小程序是我们日常生活中经常会接触到的工具&#xff0c;打开小程序后&#xff0c;它就会留在我们微信的”“发现-小程序”栏。很多人并不知道该如何删除、关闭小程序&#xff0c;所以今天就跟大家科普下相关问题。1.如何删除小程序首先&#xff0c;打开微信界面&#xff0c…

上海交通大学2006年数学分析考研试题

转载于:https://www.cnblogs.com/zhangzujin/p/4078900.html

出现的是乱码_cad状态栏出现了方框乱码怎么办?

左下角阅读原文看CAD视频好课推荐&#xff1a;1、CAD2014&#xff1a;点击查看 2、室内&全屋&#xff1a;点击查看 3、CAD2019&#xff1a;点击查看4、CAD2018&#xff1a;点击查看5、Bim教程&#xff1a;点击查看6、室内手绘&#xff1a;点击查看7、CAD三维&#xff1a;点…

UILabel 详解

UILabel 多行文字自动换行 &#xff08;自动折行&#xff09;1.UIView *footerView [[UIView alloc] initWithFrame:CGRectMake(10, 100, 300, 180)]; 2. UILabel *label [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; 3. label.text "…

onclick实现超链接_给超链接加onclick事件

在动态网页中&#xff0c;常常需要在单击超链接时处理一些数据&#xff0c;而不是跳转一个网页。在这种情况下&#xff0c;通常有以下三种处理方式&#xff1a;不设置标签的href属性&#xff0c;只设置onclick属性。在这种处理方式下&#xff0c;通常超链接文本会和正文的文本以…

Android 布局以及优化资料汇总

2019独角兽企业重金招聘Python工程师标准>>> 1.性能优化之布局优化 2.Android 开源库 V - Layout 转载于:https://my.oschina.net/zhugenqiang/blog/822942