Docker容器加载宿主机的hosts解析

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 前言   公司一直在用传统的tomcat下丢war包的架构体系,随着项目的增多、服务器数量的增多、需要为此花费很多时间在不同服务器的系统环境问题上。为了技术的与时俱进和工作的运维效率等方面,笔者引入docker容器部署方式,通过Gitlab+Jenkins+Harbor体系,通过Dockerfile生成自定义镜像并放置Harbor仓库,Jenkins加上自定义Shell脚本(实现拉镜像,启动容器,容器映射端口固定,自定义日志路径)等,基本实现了持续集成的自动化部署。

前言

  公司一直在用传统的tomcat下丢war包的架构体系,随着项目的增多、服务器数量的增多、需要为此花费很多时间在不同服务器的系统环境问题上。为了技术的与时俱进和工作的运维效率等方面,笔者引入docker容器部署方式,通过Gitlab+Jenkins+Harbor体系,通过Dockerfile生成自定义镜像并放置Harbor仓库,Jenkins加上自定义Shell脚本(实现拉镜像,启动容器,容器映射端口固定,自定义日志路径)等,基本实现了持续集成的自动化部署。在测试环境试用了一段时间,发现效果还不错,但近来却发现容器中应用有报错,根据报错信息定位到容器中hosts文件解析问题。

解决

  于是乎,通过各种试验,找到了解决方案,即在docker容器启动时通过---add-host方式加载宿主机的解析到容器中,如下:

  /usr/bin/docker run -d \
    -p 8888:7001 \
    -p 9999:37001 \
    -v /webapps/health_record\.war:/usr/local/tomcat-7001/webapps/health_record\.war \
    -v /logs/health_record:/usr/local/tomcat-7001/logs \
    -v /logs/HC_logs/health_record:/usr/local/dir_samba \
    $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') \
    --name health_record8 \
    172.21.97.152/tomcat/tomcat-de:4.0

说明

  重点是标红内容,将hosts文件动态读取,拼接成--add-host所要的格式,NR>2是过滤掉/etc/hosts文件中头两行(不是我想要的内容)。

缺点

  不能动态加载宿主机的hosts文件,如果宿主机的hosts文件发生变化,容器需要同步更新,必须删除容器重新生成即可。

完善

  此为开启容器时加参数方式,也可用其他方式,如:

    1)进入容器编辑hosts文件;   # 临时解决

    2)修改容器默认的解析文件(即自定义hosts文件);   # 将容器变成启动后不去找/etc/hosts,而是找自定义的hosts文件

-------------------------------------------------------------

作者: 罗穆瑞

转载请保留此段声明,且在文章页面明显位置给出原文链接,谢谢!

------------------------------------------------------------------------------

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

------------------------------------------------------------------------------

目录
相关文章
|
8天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
11天前
|
存储 算法 程序员
C++从入门到精通:2.2.1标准库与STL容器算法深度解析
C++从入门到精通:2.2.1标准库与STL容器算法深度解析
|
1月前
|
Kubernetes 网络协议 Docker
Docker 容器的DNS
Docker 容器的DNS
32 1
|
1月前
|
关系型数据库 MySQL Docker
Docker从容器中项目如何访问到宿主机MYSQL
Docker从容器中项目如何访问到宿主机MYSQL
139 0
|
2月前
|
关系型数据库 MySQL 数据库
docker容器访问宿主机mysql数据库
docker容器访问宿主机mysql数据库
50 0
|
2月前
|
存储 算法 数据处理
【C++ STL容器set 】set 容器的全方位解析
【C++ STL容器set 】set 容器的全方位解析
122 0
|
2月前
|
存储 安全 编译器
【C++ 17 泛型容器对比】C++ 深度解析:std::any 与 std::variant 的细微差别
【C++ 17 泛型容器对比】C++ 深度解析:std::any 与 std::variant 的细微差别
60 1
|
2月前
|
存储 缓存 调度
C++关联容器深度解析:提升数据结构操作的艺术
C++关联容器深度解析:提升数据结构操作的艺术
76 0
|
2月前
|
安全 算法 调度
C++队列探秘:队列容器的使用技巧与实战案例解析
C++队列探秘:队列容器的使用技巧与实战案例解析
129 0
|
6天前
|
存储 虚拟化 数据中心