iManager Docker环境ip冲突解决方案

版权声明:本文为博主原创文章,欢迎转载,SuperMap技术问答社区 http://ask.supermap.com https://blog.csdn.net/supermapsupport/article/details/89532014

作者: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修改成我们新创建的网络
    network:
    	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服务了

猜你喜欢

转载自blog.csdn.net/supermapsupport/article/details/89532014