Docker:连接到容器(不暴露端口)
首先要做的是:我确实使用了Google和SO这两种search。
任务
尝试从我的主机(OSX)连接MongoGUIClient到我的容器内的MongoDB。
我做了什么?
- 版本:
docker run --name some-mongo -d mongo
- 版本:
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)的限制,阻止这样做。
这就是为什么当前的应用程序示例只显示通过本地主机访问。
从这个线程 :
目前访问容器的唯一方法是通过暴露一个端口。
Mac上没有docker0
。