我正在使用以下Dockerfiles在运行Docker Desktop for Windows 17.03版的Windows 10桌面上的Windows容器中创建运行Jenkins的容器
FROM microsoft/windowsservercore RUN powershell -Command wget 'http://javadl.oracle.com/webapps/download/AutoDL?BundleId=210185' -Outfile 'C:\jreinstaller.exe' ; Start-Process -filepath C:\jreinstaller.exe -passthru -wait -argumentlist "/s,INSTALLDIR=c:\Java\jre1.8.0_91" ; del C:\jreinstaller.exe ENV JAVA_HOME c:\\Java\\jre1.8.0_91 RUN setx PATH %PATH%;%JAVA_HOME%\bin CMD [ "java.exe" ]
我从这个docker文件创建图像:
docker build -t windows-java:jre1.8.0_91 .
我用来安装Jenkins的第二个Dockerfile:
FROM windows-java:jre1.8.0_91 ENV HOME /jenkins ENV JENKINS_VERSION 2.58 RUN mkdir \jenkins RUN powershell -Command "wget -Uri https://updates.jenkins-ci.org/latest/jenkins.war -UseBasicParsing -OutFile /jenkins/jenkins.war" EXPOSE 8080 EXPOSE 50000 CMD java -jar C:\\jenkins\\jenkins.war docker build -t jenkins-windows:2.0 .
然后我像这样启动容器:
docker run --name jenkinsci -p 8080:8080 -p 50000:50000 jenkins-windows:2.0
我可以看到容器正常运行并且日志显示良好
PS C:\Users\mandeep\ringba\ringba-jenkins-setup-windows\jenkins-master> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 85ba2ef525a1 jenkins-windows:2.0 "cmd /S /C 'java -..." 8 hours ago Up 8 hours 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkinsci
但是,我无法访问http://localhost:8080
在主机的Web浏览器上运行的jenkins服务器.
不确定它是否有帮助但是当我Linux container
在同一台机器上以模式运行docker时,我能够http://localhost:8080
使用他们的官方docker镜像访问jenkins服务器.
这是目前Windows上的一个已知问题.使用localhost/127.0.0.1无法从其自己的主机访问容器端点.今天可以使用Linux容器,因为Docker包含了一个特殊的解决方法,这是他们用于在Windows上运行Linux容器的Moby/Linux实现所特有的.
我们正在努力解决这个问题,但今天我们建议您通过以下方式解决此问题:
使用运行容器的主机的IP地址以及其主机上容器的公开端口,从单独的主机访问容器端点
或者通过使用容器的内部IP地址和发布端口访问同一主机上的容器(您可以使用docker network inspect
或docker exec
获取容器端点本身的IP地址)