首页 > 数据库 >Docker 运行 mongodb 无法连接 mongosh 问题

Docker 运行 mongodb 无法连接 mongosh 问题

时间:2023-04-19 18:23:34浏览次数:37  
标签:容器 mongo 启动 mongodb mongosh Docker docker

场景

在宿主机上依次执行以下命令, 拉取 mongo 镜像, 创建容器并运行

docker pull mongo
docker run --rm -d \
--name mongo-test \
mongo \
bash

进入容器中:

docker exec -it mongo-test bash

执行使用 mongosh 连接 mongo 数据库的命令:

mongosh

报错:

MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017

分析

连接出错, 可能是 docker 容器的网络问题, 于是修改默认配置 ip , 修改之后没找到重新加载配置的方法, 遂重启容器, 顺便学习 docker cp 的用法, 重新加载配置也失败, 查看本地正常运行在 docker 中的 mongo 容器, 并没有修改 ip 为 0.0.0.0 , 又去复习了 127.0.0.1 和 0.0.0.0 以及 localhost 的区别.
后来想到, 有没有可能 mongo 服务没有启动, 没有启动应该也会导致连接出错. 果然是这样, 启动 mongodb 的命令是 mongod, 启动之后解决问题. 同时需要修改容器启动命令为:

docker run --rm -d \
--name mongo-test \
mongo \
mongod

之后再使用 docker exec 进入容器使用 mongosh 连接正常.
出现这个问题的原因:

  1. 不清楚镜像和容器启动的关系, 以为容器启动之后 mongodb 会自动运行, 但实际需要在启动命令中显式声明
  2. history没有找到本地 mongo 容器启动的命令, 自己按习惯顺手写了 bash

实际上我有很多坑都是这样, 灯不亮, 灯泡没问题, 插座开关也开了, 但插座没插电.

总结

docker 启动命令中, 可能需要显式指明要启动的服务, mongodb 镜像并不会自动启动 mongodb 服务.
docker 容器中需要连接 127.0.0.1 时, 不需要作额外配置.

标签:容器,mongo,启动,mongodb,mongosh,Docker,docker
From: https://www.cnblogs.com/livebz/p/17334183.html

相关文章

  • Docker安装ElasticSearch
    1安装说明在平时工作的时候,开发环境大多数会安装单机ElasticSearch,但生产环境基本会安装ElasticSearch集群版,所以我们接下来实现一下ElasticSearch单机安装,下一节实现集群安装,但安装也大多数采用Docker安装。不过中文搜索,会实现分词器集成,可以采用IK分词器。ElasticSearch采用......
  • 2023年windows DockerDeskTop最新款4.18.0 全程保姆级安装
    目录前景提示windows10内置的linux系统1.这个内置系统一定要在windowsstore里安装,否则,无法使用,这是重点。进入商店,搜索linux。2.一般画圈这些都可以使用。4.安装会让你输入微软账户密码(首次)。5.静静等待,本作的这个大概550M左右。6.装好后,会生成一个图标(像应用程序一样,双击......
  • windows系统下,关于docker的问题总结
    1、Docker启动时的问题在启动中遇到弹出信息框,一些乱码和引发异常的上一位置中堆栈跟踪的末尾,只需要管理员身份运行CMD/PS,输入:netshwinsockreset,重启电脑,再次运行docker就可以了。2、遇到下面报错AnunexpectederroroccurredFailedtodeploydistrodocker-desktoptoC......
  • docker学习
    镜像(image)镜像可以理解为一个模板,里边有一些东西,可以通过run命令来进行运行。通过某一个镜像可以创建多个容器(最终的服务或者是项目就是运行在容器里边的) 容器(container)Docker利用容器技术可以独立运行一个或者一组应用。可以通过镜像运行启动、停止、删除的基本命令目前可......
  • 【Docker】常用命令
    1、Docker启动启动sudosystemctlstartdocker启动成功是没有任何消息提示的,要知道在Linux系统中,没有消息就表示成功设置docker开启自启systemctlenabledocker判断是否安装启动成功dockerversion出现服务端和客户端的相关信息,即表示启动成功。2、常用命令2......
  • docker常用命令
    docker要删除镜像,先要删除依赖它的容器1.删除容器dockerps#查看正在运行的容器dockerps-a#查看所有容器dockerrmcontainer_id#删除容器2.删除镜像dockerimages//查看镜像dockerrmiimage_id2.1删除其他镜像#删除nullimagesudodockerrmi$(dockerima......
  • 本地升級stable-diffusion diffuser docker CUDA11.7 RTX2060
    1.0前言本地搭建stable-diffusiondiffuserdockerCUDA10.2RTX2060上次安裝的cuda10.2太舊了,升級cuda11.7順便填一下漏了的點。2.0卸載sudoapt-getremove--purge'^nvidia-.*'sudoapt-getremove--purge'^libnvidia-.*'sudoapt-getremove--purge'^cuda-.*&......
  • MongoDB 4.2:配置文件选项全解析《二》
    1.net.unixDomainSocket选项net:unixDomainSocket:enabled:<boolean>pathPrefix:<string>filePermissions:<int>net.unixDomainSocket.enabledType:boolean默认值:True启用或禁用UNIX域套接字上的侦听。net.unixDomainSocket.enabled仅适用于基于Uni......
  • 虚拟化+docker概念基本介绍
    文章目录引言一、虚拟化简介1.1.虚拟化概述1.2.cpu的时间分片(cpu虚拟化)1.3.cpu虚拟化性性能瓶颈1.4.虚拟化工作原理虚拟化类型虚拟化功能二、Docker容器概述2.1Docker是什么2.2使用docker有什么意义2.3Docker的使用场景2.4Docker引擎(DockerEngine)2.5Docker三要素(核心组件......
  • docker卸载
    linux环境卸载docker的方法如下:yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\......