iManager Docker环境ip冲突解决方案

2024-02-25 09:58

本文主要是介绍iManager Docker环境ip冲突解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:doremi

iManager介绍

Docker是一种容器化新技术,把应用+依赖环境打包成标准单元(容器),使应用忽略部署环境的差异,越来越多的行业在用Docker规范部署、提高效率。iManager 9D提供全套SuperMap GIS平台Docker镜像,提供GIS站点、数据库、智慧城市应用等多类组合模板,支持UI查看、监控、操作等,支持多租户、动态伸缩,协助更便捷地打造高性能云GIS方案。

Docker网络

iManager使用docker环境时,docker网络模式默认使用的bridge模式,当我们创建容器时,每个容器会有它自己的虚拟网络接口连接到桥接网络docker0,并获取一个ip。可以通过ifconfig docker0查看docker0的信息,使用route -n命令可以看到,docker会默认占用三个网段,172.17.0.0,172.18.0.0,172.19.0.0

在实际使用环境中,有可能咱们局域网内已经将这些网段分配到了其他的工作区域中,如果在这些工作区域中去访问此环境下的docker服务,是无法正常访问的。那么这时候就只有两种解决办法,将已分配的工作区域的网段换成其他网段,或者将docker占用的网段指定成其他网段,显然前者相对来说成本要稍高些。所以今天咱们就来看看如何将docker network占用的网段指定成其他的网段以避免ip冲突。

解决步骤
  1. 停掉docker服务
    service docker stop
    
    如果是使用的是ova包或者是openstack的镜像包环境,可以省略这一步
  2. 创建新的docker network桥接网络
    使用docker create命令创建一个新的网络配置,以下创建了一个网段为182.17.0.0的网络
    docker network create --subnet=182.17.0.0/16 --gateway=182.17.0.1 mynetwork
    
  3. 修改docker-compose.yml配置文件
    在iManager的文件夹下面找到docker-compose.yml文件,进行编辑。
    在配置文件的最下面将network的default修改成我们新创建的网络
    networks:mynetwork:external: true
    
    在这里插入图片描述
    然后还需要将每个容器的networks也修改成我们新创建的网络,需要注意的是nginx容器不要修改,因为它使用的是host模式。
    在这里插入图片描述
  4. 重启docker服务 ,重启iManager
    service docker restart
    
    重启iManager,在iManager的文件夹下执行start.sh脚本,如果是使用的是ova包或者是openstack的镜像包环境,可以跳过上一步,直接重启iManager。重启可以看到容器除了nginx都重新创建了。
    ./start.sh
    
  5. 验证是否使用上了新创建的网络,确保除了Nginx容器外其他的容器都使用上新创建的网络
    docker inspect mynetwork
    
    在这里插入图片描述
    在这里插入图片描述
    以上,可以看出除了nginx容器,其他的容器都使用上我们创建的新网络,说明配置是成功了
  6. 移除以前的网络配置
    查看docker network所有的网络配置,使用docker network rm删除之前使用的网络
    docker network ls 
    docker network rm imanager_default
    
    在这里插入图片描述
    如果还有容器在使用之前的网络,移除是会报错的,将docker-compose.yml中未修改networks的容器修改之后执行./start.sh重启,再进行移除
    在这里插入图片描述
    最后我们还需要停用之前的虚拟网卡,不然ip依然会冲突,使用route -n查看当前还在使用的路由,停用掉172.17.0.0和172.18.0.0网卡
    // 查看路由
    route -n
    //停用网卡
    ifconfig docker0 down
    ifconfig docker-sys down
    
    在这里插入图片描述
    到这里我们已经成功把docker使用的网段修改成了182.17网段了,在172.17.0.0,172.18.0.0,172.19.0.0三个网段环境下就能正常访问imanager和其他暴露出来的docker服务了

这篇关于iManager Docker环境ip冲突解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745126

相关文章

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作