mongodb - docker:显示来自链接容器的开放端口

标签 mongodb docker

如果我检查官方的 mongo docker 镜像,我可以看到它暴露了 27017 端口

$ docker inspect mongo
...
"ExposedPorts": {
    "27017/tcp": {}
},
...

我已经运行了图像,将内部端口绑定(bind)到我的主机上:
$ docker run -p 27017:27017 -d --name db mongo

我现在以交互模式运行我自己的图像,启动 bash
$ docker run -i -t --link db:db_1 cd9b5953b633 /bin/bash

在我的 dockerized 容器中,如果我尝试显示打开的端口,则没有任何监听。
$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path

我在这里做错了什么?如何从我的 dockerized 容器连接到 mongo 容器?

如果它有一些用处,这里是我的 Dockerfile:
# https://registry.hub.docker.com/u/dockerfile/nodejs/ (builds on ubuntu:14.04)
FROM dockerfile/nodejs

MAINTAINER My Name, me@email.com

ENV HOME /home/web
WORKDIR /home/web/site

RUN useradd web -d /home/web -s /bin/bash -m

RUN npm install -g grunt-cli
RUN npm install -g bower

RUN chown -R web:web /home/web
USER web

RUN git clone https://github.com/repo/site /home/web/site

RUN npm install
RUN bower install --config.interactive=false --allow-root

ENV NODE_ENV development

# Port 9000 for server
# Port 35729 for livereload
EXPOSE 9000 35729
CMD ["grunt"]

最佳答案

Docker 创建一个网络命名空间,因此在您的容器中,您将看不到主机的暴露端口。

在您的用例中,您不需要使用 -p 运行 mongo如果您只需要从其他容器访问它。 --link将简单地将链接的容器信息“注入(inject)”为环境变量。

在您的新容器中,您可以执行 env查看列表,您将获得类似 DB_1_PORT_27027_TCP_ADDR 的内容使用可以连接的 mongo 容器的私有(private) IP。

关于mongodb - docker:显示来自链接容器的开放端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27146494/

相关文章:

Mongodb 副本集 - 始终显示 "syncingTo"

javascript - histogram 直方图的结果

git - Bamboo + Docker + Kubernetes部署

Docker 镜像不会在后台运行

ruby-on-rails - Docker:COPY 未能找到 Gemfile:没有这样的文件或目录

node.js - 使用 Mongoose 在 ejs 中显示 Mongodb 集合中的数据

sql - NoSQL和SQL如何选择?

node.js - 高性能 API 可处理许多请求

node.js - Docker NodeJS Puppeteer@2.0.0-如何修复无法启动Chrome!问题

php - 从容器中访问图像哈希