首先,我确实使用了搜索,包括 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检查
来获取容器IP(在我的例子中是172.17.0.2
),然后我想连接到 172.17.0.2:27017
但这不起作用,这就是问题所在。
我在这里做错了什么?我的概念有错误吗?我只想连接到该容器子网络而不暴露端口。这不可能吗?
最佳答案
使用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
关于mongodb - Docker:连接到容器(不暴露端口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39674417/