Macos 如何从mac中的docker容器外部访问?

Macos 如何从mac中的docker容器外部访问?,macos,docker,Macos,Docker,我有一个docker容器在mac中的默认vm中运行,我已经将特定应用程序的端口映射到vm的端口。完成后,我可以通过以下操作访问我的应用程序: curl $(docker-machine ip default):9003 之后,我通过以下方式进行端口转发,将vm端口映射到本地主机: VBoxManage controlvm default natpf1 "9003,tcp,127.0.0.1,9003,,9003" 完成后,我会从本地主机收到应用程序的响应 curl localhost:900

我有一个docker容器在mac中的默认vm中运行,我已经将特定应用程序的端口映射到vm的端口。完成后,我可以通过以下操作访问我的应用程序:

curl $(docker-machine ip default):9003
之后,我通过以下方式进行端口转发,将vm端口映射到本地主机:

VBoxManage controlvm default natpf1 "9003,tcp,127.0.0.1,9003,,9003"
完成后,我会从本地主机收到应用程序的响应

curl localhost:9003
我的问题是:如何从外部世界甚至从自己的网络访问此应用程序?我已尝试在mac中打开一个端口:

pass in inet proto tcp from any to any port 9003

但端口仍然显示为使用nmap关闭。有人知道我遗漏了什么吗?

如果使用了
docker run
选项
--net=host
,则可以将套接字绑定到本地主机,因此本地堆栈以及NIC在主机和容器之间共享

OTOH,如果使用了
docker run
选项
-p
,那么如果套接字绑定到本地主机IP地址,则无法从容器外部访问服务



等待@marc-b的答案,他给出了第一个答案。

您只绑定了localhost(127.0.0.1)。你需要绑定到任何你的虚拟机的“走出去”ip。太好了,完全错过了,将其作为回复发布,我会接受。你可以在这里找到解决方案: