MacOS下Docker运行Jenkins后无法访问localhost:8080
问题排查:Docker Jenkins容器启动后无法访问localhost:8080
我在MacOS的Docker Desktop上执行docker pull jenkins/jenkins:lts-jdk11拉取Jenkins镜像并运行。运行日志显示Jenkins已完全启动,但在Chrome中访问http://localhost:8080/时,页面提示“无法访问此网站”。此前该服务可正常使用,因Cmake插件问题重新拉取镜像后出现此故障,请求排查原因。
运行日志
user@MacBook-Pro ~ % docker pull jenkins/jenkins:lts-jdk11 lts-jdk11: Pulling from jenkins/jenkins 4544405c869e: Already exists 053893571470: Already exists 09443be43c92: Already exists 245a3ac7248d: Already exists 945be0a39d66: Already exists 345223d4887e: Already exists 7456b7b2d084: Already exists b45efbe3b729: Already exists 844a2b426b1d: Already exists 24583556fd6c: Already exists 2897437500f5: Already exists 476474UDUDGD: Already exists 67GDGD6DFFDF: Already exists FD63635E6553: Already exists Digest: sha256:5508cb1317aa0ede06cb34767fb5643860d1307109ade577d5df871f62170678 Status: Downloaded newer image for jenkins/jenkins:lts-jdk11 docker.io/jenkins/jenkins:lts-jdk11 user@MacBook-Pro ~ % docker images REPOSITORY TAG IMAGE ID CREATED SIZE jenkins/jenkins lts-jdk11 c1ae8e3564e4 2 weeks ago 453MB user@MacBook-Pro ~ % docker run c1ae8e3acfe4 Running from: /usr/share/jenkins/jenkins.war webroot: EnvVars.masterEnvVars.get("JENKINS_HOME") 2022-09-27 20:45:33.606+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file 2022-09-27 20:45:34.165+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath 2022-09-27 20:45:34.198+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-10.0.11; built: 2022-06-21T21:12:44.640Z; git: d988aa016e0bb2de6fba84c1645649c72eae3e32; jvm 11.0.16.1+1 2022-09-27 20:45:34.369+0000 [id=1] INFO o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet 2022-09-27 20:45:34.398+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: Session workerName=node0 2022-09-27 20:45:34.641+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME") 2022-09-27 20:45:34.783+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started w.@4d8286c4{Jenkins v2.361.1,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war} 2022-09-27 20:45:34.795+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStart: Started ServerConnector@e84a8e1{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} 2022-09-27 20:45:34.809+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: Started Server@32c85649{STARTING}[10.0.11,sto=0] @1559ms 2022-09-27 20:45:34.811+0000 [id=24] INFO winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled 2022-09-27 20:45:34.926+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Started initialization 2022-09-27 20:45:34.946+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins 2022-09-27 20:45:35.328+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins 2022-09-27 20:45:35.331+0000 [id=30] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins 2022-09-27 20:45:35.337+0000 [id=35] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions 2022-09-27 20:45:35.460+0000 [id=33] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded 2022-09-27 20:45:35.461+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted 2022-09-27 20:45:35.461+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs 2022-09-27 20:45:35.462+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated 2022-09-27 20:45:35.496+0000 [id=49] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Download metadata 2022-09-27 20:45:35.501+0000 [id=49] INFO hudson.util.Retrier#start: Attempt #1 to do the action check updates server WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/var/jenkins_home/war/WEB-INF/lib/groovy-all-2.4.21.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int) WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2022-09-27 20:45:35.930+0000 [id=29] INFO jenkins.install.SetupWizard#init: ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 754547907ce14281b349837d4acd8786 This may also be found at: /var/jenkins_home/secrets/initialAdminPassword ************************************************************* ************************************************************* ************************************************************* 2022-09-27 20:45:48.128+0000 [id=49] INFO h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller 2022-09-27 20:45:48.129+0000 [id=49] INFO hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1 2022-09-27 20:45:48.131+0000 [id=49] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Download metadata. 12,634 ms 2022-09-27 20:45:48.226+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2022-09-27 20:45:48.235+0000 [id=23] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
排查与解决方法
1. 补全容器端口映射
你的docker run命令未配置端口映射,容器内部8080端口并未暴露给主机。重新启动容器时添加端口映射参数:
docker run -p 8080:8080 c1ae8e3564e4
-p 主机端口:容器端口:将主机指定端口与容器端口绑定,确保主机能访问容器内服务
2. 检查容器运行状态
执行命令查看容器是否正常运行:
docker ps
如果容器未运行,先清理旧容器再重启:
# 替换<容器ID>为实际ID,可通过docker ps -a查看 docker stop <容器ID> docker rm <容器ID>
3. 检查主机端口占用情况
MacOS上用以下命令检查8080端口是否被其他进程占用:
lsof -i :8080
若端口被占用,可杀掉占用进程,或更换主机端口启动:
docker run -p 8081:8080 c1ae8e3564e4
之后访问http://localhost:8081/
4. 验证容器内部服务可用性
进入容器内部,测试Jenkins服务是否正常:
docker exec -it <容器ID> bash curl localhost:8080
若返回Jenkins页面内容,说明容器内部服务正常,问题出在端口映射或主机网络配置。
5. 重置Docker网络配置
打开Docker Desktop偏好设置,进入Resources->Network,点击Reset to factory defaults,重启Docker后再启动Jenkins容器。
内容的提问来源于stack exchange,提问作者Autechre
相关产品推荐
相关产品推荐

