容器"共享"宿主机的hosts文件(终极方案)
0.背景
有时候制作docker镜像生成容器时需要宿主机的hosts文件共享到容器中。首先想的是通过挂载的方式共享hosts文件,但是实践时发现根本行不通,hosts文件在/etc/目录下,如进行挂载将会将/etc/目录全部共享到容器中,如果容器与宿主机的系统不一致,这样挂载会给容器的微系统带来无法正常运行的风险。后来实践后,即使将/etc目录进行挂载也是无效的。所以通过挂载/etc/目录是行不通的。后经网上查阅其他方法也没有合适解决方案,以下是我个人的想法。
1、方法
既然挂载方式行不能,能不能在生成容器时动态把hosts文件的关系动态加载到容器的hosts文件里面去呢?经过收集资料后最后也找到解决方法,利用awk命令与docker的--add-host参数。思路就是动态读取hosts文件,并将数据拼接成--add-host所要的格式(以下是个例子):
*********************************
docker run -it \
--name mockdata \
-v /bigdata/MockData:/bigdata/MockData \
--restart always \
$(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host " $2 ":" $1}}') \
mockdata \
bin/sh
*********************************
重点就是在黄色部分,将hosts文件动态读取,拼接成--add-host所要的格式,红色部分是过滤头hosts文件的头两行(不要我想要的)。
2、缺点
不能动态加载宿主机的hosts文件,如果宿主机的hosts文件发生变化,将容器删除后重新生成。容器只提供服务,不保存数据,所以删除重新生成是可以的。
容器"共享"宿主机的hosts文件(终极方案)的更多相关文章
- Docker容器加载宿主机的hosts解析
前言 公司一直在用传统的tomcat下丢war包的架构体系,随着项目的增多.服务器数量的增多.需要为此花费很多时间在不同服务器的系统环境问题上.为了技术的与时俱进和工作的运维效率等方面,笔者引入doc ...
- docker容器访问宿主机的IP——以rocketmq管理工具为例
在宿主机(MacOS系统)上运行了原生的RocketMQ服务,为了方便管理,需要以Docker方式运行RocketMQ的管理工具——rocketmq-console (项目地址:https://git ...
- docker容器访问宿主机IP
宿主机执行ifconfig 会看到docker0那个ip,可以使用来访问宿主机
- docker容器与宿主主机之间拷贝文件
文章链接:https://blog.csdn.net/libertine1993/article/details/80651552 https://blog.csdn.net/u011596455/a ...
- 【Devops】【docker】【CI/CD】关于jenkins构建成功后一步,执行的shell命令详解+jenkins容器运行宿主机shell命令的实现方法
1.展示这段shell命令 +详解 #================================================================================= ...
- docker-compose 快速部署Prometheus,监控docker 容器, 宿主机,ceph -- cluster集群
话不多说上菜: 现在环境是这样: ceph 4台: 192.168.100.21 ceph-node1 192.168.100.22 ceph-node2 192.168.100.23 ceph ...
- linux hosts文件详+mac主机名被莫名其妙修改
1.名词解析 主机名: 无论是在局域网还是在INTERNET上,每台主机都有一个IP地址,用来区分当前是那一台机器(其实底层是使用机器的物理地址),也就是说IP地址就是一个主机的门牌号,唯一的标示这一 ...
- Jenkins(Docker容器内)使用宿主机的docker命令
1.Jenkins镜像 Docker容器内的Jenkins使用容器外宿主机的Docker(即DooD,还有另外的情况就是DioD),google一下有几种说法,但是都没试成功(试过一种就是修改宿主机/ ...
- 主机名/etc/hosts文件的作用
1,/etc/hosts,主机名ip配置文件. # Do not remove the following line, or various programs # that require netwo ...
随机推荐
- FreeBSD Here is how to upgrade
freebsd-version or uname -mrs freebsd-update fetch install pkg update && pkg upgrade -y fr ...
- 学习SASS
这几天白老师叫我们css的扩展技术,有什么LESS,还有SASS(我还以为是SAS...QAQ),LESS由于功能比较简单,用的也比较少所以我们重点学习了SASS.简单地说SASS是一种CSS的开发工 ...
- 数据挖掘竞赛kaggle初战——泰坦尼克号生还预测
1.题目 这道题目的地址在https://www.kaggle.com/c/titanic,题目要求大致是给出一部分泰坦尼克号乘船人员的信息与最后生还情况,利用这些数据,使用机器学习的算法,来分析预测 ...
- centos7成功部署OpenLDAP
目录 一.部署OpenLDAP. 1 1.安装openLDAP. 1 2.设置openldap管理员密码... 1 3.更改openldap配置... 2 4.更改监控认证配置... 2 5.设置DB ...
- HDU 2809 God of War (状压DP)
God of War Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hbase 查看hfile文件
emp表数据结构 hbase(main):098:0> scan 'emp' ROW COLUMN+CELL row1 column=mycf:depart, timestamp=1555846 ...
- [转帖]2018年全球ERP软件行业市场规模与发展趋势分析 云ERP将兴起【组图】
2018年全球ERP软件行业市场规模与发展趋势分析 云ERP将兴起[组图] https://www.qianzhan.com/analyst/detail/220/190215-4b1d6868.ht ...
- php中文网--JavaScript
PHP中文网:http://www.php.cn/course/18.html 常用的两个客户端输出方法 document.write("你好呀js"); 描述:在网页的<b ...
- 在vue中使用async/await遇到的坑
最近无聊在搞一些新的东西,今天就遇到一个async/await的坑: 因为我用的不是vue官方的脚手架,所以遇到这样的问题: await is a reserved word 这样的警告,我猜应该是缺 ...
- div css 布局对seo 影响 布局原则
一.代码精简 使用DIV+CSS布局,页面代码精简,这一点相信对XHTML有所了解的都知道.代码精简所带来的直接好处有两点:一是提高蜘蛛爬行效率,能在最短的时间内爬完整个页面,这样对收录质量有一定好处 ...