docker - 将 docker 容器端口桥接到主机端口

标签 docker

我使用以下命令运行 Docker 容器:

docker run -d --name frontend_service -net host --publish=3001:3000 frontend_service

据我了解,它将本地端口 3001 映射到容器端口 3000。 我已经 ssh 到容器并检查了curl localhost:3000。作品。但在外面的主机上,我无法 curl localhost:3001。

我检查了 nmap。端口已开放:

nmap -v -sT localhost

Starting Nmap 6.47 ( http://nmap.org ) at 2016-10-19 01:24 UTC
Initiating Connect Scan at 01:24
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 25/tcp on 127.0.0.1
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 5051/tcp on 127.0.0.1
Discovered open port 3001/tcp on 127.0.0.1
Completed Connect Scan at 01:24, 0.06s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0011s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
3001/tcp open  nessus
5051/tcp open  ida-agent

如何将容器端口与我的主机端口连接?

最佳答案

当您指定--net=host时,您将完全关闭Docker的网络设置步骤。容器不会获得自己的网络命名空间,不会获得自己的接口(interface),并且端口发布系统将没有任何内容可路由到。

如果您希望 -p 3001:3000 正常工作,请勿使用 --net=host

关于docker - 将 docker 容器端口桥接到主机端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40120597/

相关文章:

docker - 如何在 docker swarm 模式下记录容器

python - 远程 Jupyter Notebook + Docker -- 不更新文件目录?

postgresql - 无法从golang Docker容器连接到Postgres数据库

docker - 为什么只有 Docker 中的 UDP 端口失败?

ruby-on-rails - 在 Docker 中使用 nginx 服务 Rails 的预编译 Assets

docker - 节点导出器应该从主机还是容器运行?

bash - 使用Bash脚本进行Docker构建/部署

python - Docker 容器 Linux 在使用 * 读取 Python 参数时的奇怪行为

mysql - 在 docker-compose.yaml 中配置应用程序和 MySQL DB - 无法打开 JDBC 连接

git - 如何使用 git 仓库设置 Dockerfile?