拉取镜像
老样子先拉取一个镜像。
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:
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