Docker:连接到容器(不暴露端口)

首先要做的是:我确实使用了Google和SO这两种search。

任务

尝试从我的主机(OSX)连接MongoGUIClient到我的容器内的MongoDB。

我做了什么?

  1. 版本: docker run --name some-mongo -d mongo
  2. 版本: docker run --name some-mongo -d -p 127.0.0.1:27017:27017 mongo

有什么问题?

使用2.版本, 我可以从主机连接 ,没有任何问题。 但是这意味着我需要在我的系统上公开那个我不想做的端口。

我正在努力实现的

我想使用上面给出的版本,没有暴露端口,然后做docker inspect获取容器IP(在我的情况下是172.17.0.2 ),然后我想连接到172.17.0.2:27017 ,但不工作,那就是问题所在

我在这里做错了什么? 我的概念错误吗? 我只想连接到该容器子networking,而不暴露端口。 这不可能吗?

即使你可以直接联系你的容器,暴露的端口只能被其他容器看到,而不是由你的docker主机(xhyve VM)或你的实际主机(Mac)。

所以映射仍然是需要的。
然后,您可以尝试使用XHyve Alpine VM IP,但是… 此线程提到了几个当前(Q4 2016)的限制,阻止这样做。

这就是为什么当前的应用程序示例只显示通过本地主机访问。

https://docs.docker.com/docker-for-mac/images/hello-world-nginx.png

从这个线程 :

目前访问容器的唯一方法是通过暴露一个端口。
Mac上没有docker0