关于CentOS7学习过程中遇到的一些问题
1、网络不通,ping不到外网。
使用以下命令查看网卡是否启用(一般来说是ens33或eth0):
ip link
如上图,ens33的状态为up,说明网卡是开启了的,如果状态为DOWN,则说明网卡未启用,使用如下命令启用:
ip link set ens33 up
执行该命令后查看网卡状态,若还是未启用的话,键盘win+R,输入services.msc,打开服务管理器:
找到与VMWare(我是在虚拟机安装的CentOS7)相关的服务,他们都启动,接着再执行上面说的命令,应该就可以正常启用网卡了:
网卡正常启动后,再使用以下命令查看network服务是否正常运行:
sudo systemctl status network
如下图,显示active则说明network正常运行中
如果network未运行,则使用以下命令运行network服务:
sudo systemctl start network
将network服务运行起来后,使用命令以下命令查看系统网络信息:
ifconfig
网络信息如下图:
ens33的地址即为服务器的地址,即:192.168.232.128,子网掩码为:255.255.255.0。点击VMWare上分的编辑按钮,打开虚拟网络编辑器,编辑器窗口如下:
我使用的是NAT模式,该模式通常为VMnet8,查看其子网掩码是否与上方ens33的一致,再点击DHCP设置,查看ens33的ip是否在子网ip范围内:
若子网掩码一致,且ens33的ip在子网ip范围内,说明网络配置没问题,此时应该能ping到外网了
2、未将java服务地址映射到0.0.0.0,导致宿主机访问不到(虚拟机能ping到外网,但是调用接口失败)
首先使用以下命令停止容器的运行(例如容器:user):
sudo docker stop user
接着删除该容器:
sudo docker rm user
然后使用镜像(user:dev)重新构建容器并且启动容器,同时将容器(java服务)映射到地址0.0.0.0(表示监听服务器的所有ip),端口也一并进行映射,将服务器端口20000,映射到docker容器内的20000端口(user服务的端口):
sudo docker run -d -p 0.0.0.0:20000:20000 user:dev
之后使用以下命令查看docker内运行的容器信息:
docker ps
映射成功,此时从宿主机应可以调用该java服务的接口,使用虚拟机的ip+服务映射的端口号port进行访问