【发布时间】:2018-09-03 23:25:20
【问题描述】:
我正在尝试将容器的 3000 端口暴露给主机。这是我正在使用的命令:
docker run -ti --expose=3000 -p 3000:3000 dockerName
在docker ps 的PORTS 部分,我看到了0.0.0.0:3000->3000/tcp。
当我尝试连接到该端口上的简单 NodeJS 服务器时,我得到Unable to connect。我正在运行 Docker 18.03.0-ce 和最新版本的 NodeJS。
我尝试通过localhost(127.0.0.1)IP,内部容器IP(172.17.0.1),主机OS下发的IP(172.17.0.1)和主机IP都没有成功。我还完全禁用了主机操作系统上的防火墙。
这是 NodeJS 代码,在主机上运行良好:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3000/');
有没有办法让它在容器内工作并通过主机操作系统连接到它?
【问题讨论】:
标签: docker