我有一个在mac中的默认vm中运行的docker容器,我已经将我的特定应用程序的端口映射到vm的端口。完成后我可以通过以下方式访问我的应用程序:
curl $(docker-machine ip default):9003
之后我通过这种方式进行端口转发,将我的vm端口映射到我的localhost:
VBoxManage controlvm default natpf1 "9003,tcp,127.0.0.1,9003,,9003"
一旦我这样做了,我就从我的localhost获得了我的应用程序的响应
curl localhost:9003
我的问题是:如何从外部世界甚至从我自己的网络访问此应用程序?我试过用我的mac打开一个端口:
pass in inet proto tcp from any to any port 9003
但是端口仍显示为nmap关闭。有谁知道我错过了什么?
答案 0 :(得分:0)
如果使用docker-run
选项--net=host
,您可以将套接字绑定到localhost,因此本地堆栈以及NIC在主机和容器之间共享。 / p>
OTOH,如果使用docker-run
选项-p
,那么如果套接字绑定到本地主机IP地址,则无法从容器外部访问该服务。
等待@ marc-b的回答,他先给了它。