首先要做的事情是:我确实使用了Google和SO的搜索。
尝试将MongoGUIClient从我的主机(OSX)连接到容器内的MongoDB。
docker run --name some-mongo -d mongo
docker run --name some-mongo -d -p 127.0.0.1:27017:27017 mongo
使用2.版本我可以从主机连接而不会出现任何进一步的问题。但这意味着我需要在我的系统上公开那个我不想做的端口。
我想使用上面给出的1.版本,不暴露端口然后执行docker inspect
来获取容器ip(在我的情况下是172.17.0.2
)然后我想连接到{ {1}}但不起作用,这就是问题。
我在这里做错了什么?我的概念性错误是什么?我只想连接到该容器子网络而不暴露端口。这不可能吗?
答案 0 :(得分:2)
使用defreitas/dns-proxy-server。然后您可以使用其主机名访问容器。
示例:
# First run DPS
$ docker run --rm --hostname dns.mageddo \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/resolv.conf:/etc/resolv.conf \
defreitas/dns-proxy-server
# Then run the container
$ docker run --hostname some-mongo --name some-mongo -d mongo
您可以使用 netcat 检查它是否有效:
$ nc -z some-mongo 27017
$ echo $?
0
答案 1 :(得分:1)
即使您可以直接联系您的容器,它的暴露端口也只能被其他容器看到,而不是您的docker主机(xhyve VM)或您的实际主机(Mac)。
因此仍然需要制图 然后,您可以尝试使用XHyve Alpine VM IP,但...... this thread提到了一些当前(2016年第4季度)限制,无法做到这一点。
这就是当前application example仅显示通过localhost访问的原因。
来自this thread:
目前访问容器的唯一方法是公开端口 Mac上没有
docker0
。