首页 > 数据库 >Windows 上 Docker 部署 MongoDb 并构建数据持久化

Windows 上 Docker 部署 MongoDb 并构建数据持久化

时间:2023-02-23 17:47:13浏览次数:64  
标签:容器 mongod mongo Windows MongoDb conf Docker ROOT docker

拉取镜像

老样子先拉取一个镜像。

docker pull mongo:latest

运行容器

docker run -p 27017:27017 --name mongo -v /d/mongo/data:/data/db -e MONGO_INITDB_ROOT_USERNAME=sa -e MONGO_INITDB_ROOT_PASSWORD=Aa123456 -e TZ=Asia/Shanghai -d mongo:latest
  • -p 27017:27017:映射27017端口
  • -v /d/docker/mongo/data:/data/db:主机上的 /d/mongo/data 目录映射到容器内部的 /data/db 目录,这样容器内的数据将持久化保存在主机上;
  • -e MONGO_INITDB_ROOT_USERNAME=sa:创建一个 sa 的用户;
  • -e MONGO_INITDB_ROOT_PASSWORD=Aa123456:并设置密码为 Aa123456;
  • -e TZ=Asia/Shanghai:时区设置为 亚洲 / 上海;
  • -d:将容器放入后台运行

通过设置环境变量 "MONGO_INITDB_ROOT_USERNAME" 和 "MONGO_INITDB_ROOT_PASSWORD",这俩个变量结合使用,创建一个新用户并设置该用户的密码。这个用户是在身份验证数据库中创建的,并被赋予root角色,这是一个“超级用户”角色。

现在可以使用 MongoDBCompass 或者 Navicat 来进行测试(记得禁用 ssl):

MongoDBCompass:
MongoDBCompass 测试

Navicat:

然后随便创建一些数据保存,删除容器,再运行容器查看刚刚创建的数据是否存在,如果存在则数据持久化成功。

开启远程连接

为什么要开启远程连接?开启远程连接可以让用户在其他计算机或云服务器上使用MongoDB数据库,从而实现数据共享和数据协作。

开启远程连接的方法有俩种

第一种:进入容器内部修改 mongod.conf.orig 文件

打开 PowerShell

# 进入容器内部
docker exec -it mongo /bin/bash # 这边的 mongo 是因为我们之前命名了 mongo 没有命名的话就是要输入 容器id

apt update

apt install vim # 安装 vim 编辑器

vim /etc/mongod.conf.orig # 编辑 mongod.conf.orig

找到 bindIp: 127.0.0.1 给他注释或者删除,然后加上 bindIp: 0.0.0.0 这样就开启远程连接了。

设置完成之后可能要重启一下容器或者服务

第二种:在本地创建好配置文件然后把配置文件挂载到容器里

我们这边先示范 Windows 上挂载到容器内部,Linux 上的话操作也差不多:

D:\docker\mongo\conf里面创建一个 mongod.conf文件。详细配置文件参数请看:配置文件选项 — MongoDB 手册

systemLog:
   destination: file
   path: "/var/log/mongodb/mongod.log" 	# mongod或mongos应该将所有诊断日志信息发送到的日志文件的路径,而不是标准输出或主机的syslog。MongoDB在指定的路径上创建日志文件。
   logAppend: true # 当为true时,当mongos或mongod实例重新启动时,mongos或mongod将新条目追加到现有日志文件的末尾。如果没有这个选项,mongod将备份现有日志并创建一个新文件。

storage:
   # journal: enabled: true 启用了 MongoDB 的日志
   journal:
      enabled: true
      
# 要求连接到 MongoDB 服务器的客户端必须通过身份验证,才能执行任何操作。
security:
  authorization: enabled

net:
   # bindIp是 ,它强制 服务器,以仅侦听本地主机 IP 上的请求。仅绑定到 应用程序级系统可以访问的安全接口 系统网络过滤提供的访问控制 (即”localhost防火墙").
   bindIp: 0.0.0.0 # 改成 0.0.0.0 就变成远程连接了
   port: 27017
   
setParameter:
   enableLocalhostAuthBypass: false
   # 当 enableLocalhostAuthBypass 参数设置为 true 时,MongoDB 允许来自本地主机(即 127.0.0.1 或 localhost)的连接不需要进行身份验证就可以访问数据库。
   # 而当 enableLocalhostAuthBypass 参数设置为 false 时,则需要对来自本地主机的连接进行身份验证,才能访问 MongoDB 数据库。

然后运行容器的时候把配置文件挂载上去

docker run -p 27017:27017 --name mongo -v /d/docker/mongo/data:/data/db -v /d/docker/mongo/conf:/etc/mongo -e MONGO_INITDB_ROOT_USERNAME=sa -e MONGO_INITDB_ROOT_PASSWORD=p@ssw0rd -e TZ=Asia/Shanghai -d mongo:latest --config /etc/mongo/mongod.conf
  • -v /d/docker/mongo/conf:/etc/mongo:主机上的 /d/docker/mongo/conf 目录映射到容器内部的 /etc/mongo 目录;
  • --config /etc/mongo/mongod.conf:指定使用 mongod.conf 文件;

个人学习笔记,方便他人也方便自己。

标签:容器,mongod,mongo,Windows,MongoDb,conf,Docker,ROOT,docker
From: https://www.cnblogs.com/Honesty-is-the-best-policy/p/17147004.html

相关文章

  • 在 code-server Docker Container 使用 host user/group 账户
      在code-serverDockerContainer使用hostuser/group账户(jgsun.github.io) Overview“工欲善其事,必先利其器!”此文为 定制code-serverdockerimage ......
  • 以docker方式部署的redis键值查询及清理
     1、首先使用 dockerps 命令来查看正在运行的容器。该命令会列出容器的ID、名称、端口号、状态等信息。也可以使用 dockerps-a 命令来查看所有容器,包括已经停止的......
  • MongoDB 6.0.4 安装记录
    须知:版本号x.y.z,看y:偶数版为稳定版,奇数版为开发版(1)下载zip,解压1https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-6.0.4.zip建立data文件夹,与bin同......
  • Mongodb报错:SyntaxError: identifier starts immediately after numeric literal
    我在练习mongodb命令的时候,这段怎么也无法通过,一直报错:SyntaxError:identifierstartsimmediatelyafternumericliteraldb.mycol.insertMany([{_id:ObjectId(7df78a......
  • 最详细Parallels desktop 15安装Windows 10教程
    很多第一次用Mac电脑的朋友,多多少少都会有一些不太习惯macOS系统,加上有一些偏门的软件没有Mac版本,所以有时候不得不在Mac电脑上安装一个Windows。轻度使用Windows的话,最好......
  • 一次docker启动错误unable to configure the Docker daemon with file /etc/docker/da
    环境:三台服务器,一台daemon可以启动,另外两台不行解决原因:服务器内有两个docker.service,其中一个有配置--insecure-registry=127.0.0.1,重命名后启动docker可用报错如下:2月......
  • docker卸载提示Device or resource busy
    1. 停掉运行的容器,停掉docker先停掉全部运行的容器,并删除dockerkill$(dockerps-a-q)##删除所有的docker容器dockerrm$(dockerps-a-q)##删除所有的docker镜......
  • docker基本操作
     【1】常见操作本地镜像:dockerimages容器列表:dockerps-a从镜像创建容器:dockerrun...启动所有容器:dockerstart$(dockerps-a|awk'{print$1}'|tail......
  • windows 安装mysql-8.0.13(zip安装)
    安装环境说明系统版本:windows10mysql版本:mysql-8.0.13-winx64.zip下载地址:http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.13-winx64.zip解压安装......
  • Ubuntu20.04中利用VirtualBox安装Windows虚拟机
    一、virtualbox安装sudoapt-getinstallvirtualbox二、虚拟机安装Windows系统过程略过,很简单。注意点:1.在Ubuntu中利用虚拟机安装Windows系统,创建时默认不会让你选......