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

标签 mongodb docker

首先,我确实使用了搜索,包括 Google 和 SO。

任务

尝试将 MongoGUIClient 从我的主机 (OSX) 连接到容器内的 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. 版本我能够从主机进行连接,没有任何进一步的问题。但这意味着我需要在我的系统上公开该端口,但我不想这样做。

我想要实现的目标

我想使用上面给出的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/

相关文章:

java - 当我构建Docker镜像时,Gradle测试由于UnsupportedClassVersionError而失败-在本地运行良好

docker - 保护Docker容器和/或卷免受意外删除

带有另一个容器应用程序的 Docker ngrok 容器。如何连接?

docker - 无需停机即可在 Docker Compose 堆栈中部署新镜像

node.js - 注意插入新的子数组

node.js - 使用mongodb本地创建数据库的流程

java - 如何使用文档和 mongo 聚合将 mongo shell 代码转换为 java 代码

docker - sshd AuthorizedKeysCommand抛出状态127

mongodb - 基于某些条件的两个字段的总和

ruby-on-rails - Mongoid:按字段排序并跳过N条记录