Mac下Docker中运行的Jenkins如何访问本地应用并保持自身可访问?
解决方案
在Mac上使用Docker时,--network=host参数的行为和Linux环境不同——Docker for Mac基于HyperKit虚拟机运行,host模式下容器共享的是虚拟机的网络而非Mac宿主机的网络,这就是你添加该参数后无法访问Jenkins的核心原因。要同时实现Jenkins可被本地访问、且能连接Mac宿主机上的应用,可采用以下两种方法:
方法一:使用Docker官方提供的宿主机DNS(推荐)
保持你原有的Jenkins启动命令不变:
docker run -p 8080:8080 -p 50000:50000 --name jenkins -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
在Jenkins插件或任务中配置访问本地应用时,不要使用localhost,而是替换为host.docker.internal,再加上应用的端口。例如本地应用运行在8000端口,访问地址应为:http://host.docker.internal:8000。
这个DNS名称是Docker for Mac专门提供的,会自动解析到Mac宿主机的IP,无需手动配置。
方法二:手动指定宿主机IP
- 先在Mac终端执行以下命令获取本地IP地址:
ipconfig getifaddr en0
- 在Jenkins中访问本地应用时,使用该IP地址加上应用端口。例如你的本地IP是
192.168.1.105,应用端口为8000,访问地址就是:http://192.168.1.105:8000。
注意:这种方法的IP地址可能会因网络环境变化(如切换Wi-Fi)而改变,需要及时更新配置。
内容的提问来源于stack exchange,提问作者zepol
相关产品推荐
相关产品推荐

