问题:
为什么使用bridge模式不能使用window主机访问虚拟机IP:8089端口直接访问虚拟机容器
背景:
使用docker-compose中的bridge模式并且做了8089:8080的端口映射在虚拟机上启动Jenkins容器,容器正常启动,无防火墙,
现象:
使用curl 虚拟机IP:8089端口能正常访问,但是使用window主机访问虚拟机IP:8089端口失败
把docker-compose的模式改host在windows主机上使用虚拟机IP:端口即可访问
问题的原因是在bridge模式下,容器的IP地址是在虚拟网络中,无法直接从Windows主机访问。需要在Windows主机上安装Docker客户端,并使用客户端连接到虚拟机中运行的Docker引擎,然后使用Docker客户端的端口映射功能将容器的端口映射到Windows主机上,这样就可以通过Windows主机访问容器了。
具体操作步骤如下:
docker run -p 8089:8080 jenkins/jenkins:lts
docker -H ssh://user@192.168.0.100:2375 ps
其中,user是在虚拟机中具有Docker访问权限的用户,192.168.0.100是虚拟机的IP地址,2375是Docker引擎的API端口号。
docker -H ssh://user@192.168.0.100:2375 run -p 8089:8080 jenkins/jenkins:lts
其中,8089是Windows主机上的端口号,8080是容器的端口号。
http://localhost:8089