Docker端口未暴露

时间:2020-08-03 12:18:02

标签: docker

使用Windows,我已经成功通过提取了Jenkins图像

docker pull jenkins

我正在通过以下命令运行新容器,看来容器启动正常。但是,当我尝试在浏览器中访问Jenkins页面时,我只会收到以下错误消息。我期望看到Jenkins主登录页面。当我尝试其他图像(例如Redis,Couchbase和JBoss / Wildfly)时,出现相同的问题。我究竟做错了什么? Docker的新增功能以及以下教程,其中描述了以下命令以公开端口。相同的一些答案在这里+文档。请指教。谢谢。

docker run -tid -p 127.0.0.1:8097:8097 --name jen1 --rm jenkins

在浏览器中,仅出现正常的“问题加载页面错误”。

The site could be temporarily unavailable or too busy.

3 个答案:

答案 0 :(得分:2)

看看Jenkins Dockerfile from here

FROM openjdk:8-jdk

RUN apt-get update && apt-get install -y git curl && rm -rf /var/lib/apt/lists/*

ARG user=jenkins
ARG group=jenkins
ARG uid=1000
ARG gid=1000
ARG http_port=8080
ARG agent_port=50000
.....
.....
# for main web interface:
EXPOSE ${http_port}

# will be used by attached slave agents:
EXPOSE ${agent_port}

如您所见,端口8080被暴露,而不是8097。 将命令更改为

docker run -tid -p 8097:8080 --name jen1 --rm jenkins

答案 1 :(得分:2)

首先,使用-tid看起来有些奇怪。既然您正在尝试以分离的方式运行它,也许最好是-d,并使用-ti例如通过外壳docker exec -ti jen1 bash进行访问。

第二,docker localhost与主机localhost不同,因此,我将直接运行容器而不使用127.0.0.1。如果要使用它,可以指定--net=host,使127.0.0.1的内容在docker内部和外部都是相同的。

第三,尝试首先通过端口8080访问初始管理员密码。

概括地说,

docker run -d -p 8097:8080 --name jen1 --rm jenkins

然后, http://172.17.0.2:8080/

最后,解锁Jenkins设置管理员密码。您可以看一下启动日志:docker logs jen1

答案 2 :(得分:1)

命令所执行的操作是将主机端口8097与jenkins图像端口8097连接起来,但是您如何知道该图像暴露/使用了8097端口(扰流器:没有)。

此图像使用端口8080,因此您想将本地8097移植到该端口。

将命令更改为此:

accumulate = TRUE

只需使用此小修补程序测试您的命令,它就可以在本地工作。