内网环境安装离线镜像,容器内curl80服务正常,映射宿主机80,无法访问
环境:REHL 7.2 、docker 20.10.9 、docker-compose 2.5.0
过程描述:在本机电脑(外网)执行docker-compose拉取镜像并运行成功,使用save下载镜像文件,然后上传到内网环境load后启动
问题描述:访问宿主机ip(默认80端口)无法访问到管理台的页面
排查过程:
1. 使用一个纯净nginx镜像listen 80启动,可以在内网访问成功宿主机80到Nginx的相关页面,排除宿主机防火墙和端口限制(root账号启动)
2. 在运行中的container中,exec -it xxx bash进入management-web的容器,curl 127.0.0.1 及 curl 0.0.0.0都可以返回管理台页面,排除了服务健康问题
3. 查看docker bip属性,daemon.json中手动设置了172.20.0.1/16网段,systemctl restart docker后,宿主机ifconfig可以看到docker0网卡状态如下:
4. 查看容器中management-web的网络情况,使用docker inspect xxx,显示如下:
5. 查看容器中management-backend的网络情况,使用docker inspect xxx,显示如下:
6. 查看上述步骤1中nginx服务的网络情况(因为管理台web占用80,所以预先修改了这台测试ninx端口映射81)
此步骤中gateway为172.20.0.1,4和5步骤中自定义网络gateway为172.17.0.1
是否管理台镜像中有特殊网络控制?导致宿主机同容器内部网络出现问题,(容器内部web=》backend=》mysql这些可以aliases访问,无问题)