首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker端口绑定未按预期工作

Docker端口绑定未按预期工作
EN

Stack Overflow用户
提问于 2017-05-17 06:02:33
回答 3查看 8.2K关注 0票数 3

在绑定到主机端口9090的容器中运行Jenkins镜像

代码语言:javascript
复制
sudo docker run -itd -p 9090:8080 -p 50000:50000 --name=myjenkins -t jenkins-custom /bin/bash

运行$docker port myjenkins的输出

代码语言:javascript
复制
50000/tcp -> 0.0.0.0:50000
8080/tcp -> 0.0.0.0:9090

我还可以从主机透视图ps -Af | grep proxy中看到绑定

代码语言:javascript
复制
root     15314 15194  0 17:52 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 50000 -container-ip 172.17.0.2 -container-port 50000
root     15325 15194  0 17:52 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9090 -container-ip 172.17.0.2 -container-port 8080

在启动我的jenkins服务器之后,我尝试使用主机ip和转发的端口连接到容器(9090)。

我是Docker的新手,所以我可能错过了一些东西,但我希望得到一些建议

更新:包括dockerfile

代码语言:javascript
复制
From local-artifiactory/jenkinsci/jenkins:2.9
ENV java_opts="-Xmx8192m"
EN

回答 3

Stack Overflow用户

发布于 2021-03-12 08:42:52

这不是对这个特定问题的回答。这可能是对“端口映射不起作用”的一个回答

我已经被它抓到过两次了。

从命令行创建容器时,镜像名称必须放在最后

此语法:

代码语言:javascript
复制
docker run --name MyContainer MyImage -p 8080:80

将从MyImage创建容器MyContainer而不会出现问题

,但-p 8080:80部分将被忽略,您的端口映射将无法工作

此语法将起作用-除了端口映射将实际起作用外,您将看到完全相同的结果。

代码语言:javascript
复制
docker run --name MyContainer -p 8080:80 MyImage

这一点相同:

代码语言:javascript
复制
docker run MyImage --name MyContainer

这将从MyImage创建一个容器,但它不会给它显式的名称,它会分配一个随机的名称

我希望这能节省一些时间。

票数 5
EN

Stack Overflow用户

发布于 2017-05-17 06:05:49

唯一运行的进程是/bin/bash (在行尾指定)。您必须在容器内启动Jenkins。

票数 0
EN

Stack Overflow用户

发布于 2019-02-07 09:01:51

docker中的端口绑定/发布实际上是将容器的端口发布到docker-machine的,而不是localhost的。

docker run -p 9090:8080 jenkins

您将能够通过curl <your-docker-machine>:9090而不是curl localhost:9090curl 127.0.0.1:9090访问服务

要获取扩展坞机器的IP,请执行:docker-machine ls并检查URL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44012346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档