mongodb - 连接到在Docker中运行的mongodb

标签 mongodb docker virtualbox

我正在使用Windows 10

我已经安装了Virtual Box

在虚拟盒子中,我安装了网络设置为Bridge Network的Ubuntu

我正在使用Windows的Docker Toolbox启动Docker

在Docker中,我在默认端口上运行了Mongodb容器

我正在在Virtual Box中安装的Ubuntu中进行所有开发工作

这是我的终端日志

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v17.06.0-ce


$ docker-machine env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="C:\Users\test\.docker\machine\machines\default"
export DOCKER_MACHINE_NAME="default"
export COMPOSE_CONVERT_WINDOWS_PATHS="true"
# Run this command to configure your shell:
# eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env)


$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
77427d4fc49b        mongo               "/bin/sh -c '/usr/..."   About an hour ago   Up 45 minutes                           mongo

问题是我不知道如何从在Virtual Box上运行的Ubuntu全局连接到此运行MongoDB的容器。

编辑1:

来自Ubuntu的终端日志
test@test-VirtualBox:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:e1:c8:be brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.27/24 brd 192.168.1.255 scope global dynamic enp0s3
       valid_lft 78034sec preferred_lft 78034sec
    inet6 fe80::2ae9:9e0c:d9a3:f044/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:3d:79:a8:7f brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

最佳答案

您需要使用端口映射运行mongo容器

docker run -p 27017:27017 mongodb

然后,您可以使用192.168.99.100:27017进行访问。

编辑1

如果您是从另一台VM连接的,请确保添加具有公用“仅主机”网络局域网的适配器。在大多数情况下,这是vboxnet1
Network Settings

并为您的Ubuntu VM配置以下网络(确保docker VM和Ubuntu VM使用相同的网络)

VM Settings

关于mongodb - 连接到在Docker中运行的mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45876216/

相关文章:

mongodb - 集合上的复合索引是否总是比单个索引更好

mongodb - 不使用 Hibernate 时如何访问当前 session

docker - 如何查找 NGC Docker 镜像的内容?

security - 访问构建 Dockerfile 所需的 secret /私有(private)文件?

virtual-machine - Virtualbox 未在 CentOS 7 上运行

mysql - 为什么在我的 MySQL 服务器上得到 'Binary logging not possible.'?

mongodb - 使用 Mongoose 中间件查找在任一字段中值匹配的文档

performance - 如何使用 mongostats 诊断 mongodb 内部的性能问题

docker - Vagrant - Windows 上的 Docker 提供程序 - Rsync 失败

windows - 在 Virtualbox 中启动 ubuntu 时 VT-x 不可用 (VERR_VMX_NO_VMX)