MongoDB
获取docker镜像
docker pull mongo
docker pull mongo:3.6
创建配置文件与宿主映射数据目录
cd /environment
mkdir /mongodb
## 数据库数据目录 /environment/mongodb/data
mkdir data
## 备份数据目录 /environment/mongodb/dump
mkdir dump
## 日志目录 /environment/mongodb/log
mkdir log
## 配置目录 /environment/mongodb/conf
mkdir conf
cd /environment/mongodb/conf
vi mongodb.conf
chmod 777 -R mongodb
启动,挂载数据卷并开启授权
docker run --name mongodb \
-v /environment/mongodb/data:/data/db \
-v /environment/mongodb/dump:/data/backup \
-v /environment/mongodb/conf:/data/configdb \
-v /environment/mongodb/log:/data/log \
-p 27017:27017 \
-d mongo \
-f /data/configdb/mongodb.conf \
--auth
说明
- 容器命名mongodb
- 数据库数据文件挂载到/usr/local/docker/mongodb/data
- 备份文件挂载到/usr/local/docker/mongodb/backup
- 启动的配置文件目录挂载到容器的/usr/local/docker/mongodb/conf
- 开启身份验证 --auth
配置文件启动 -f /data/configdb/mongodb.conf 以
mongod启动命令是在容器内执行的,因此使用的配置文件路径是相对于容器的内部路径。
授权
# 开启授权访问后需为admin数据库创建用户和密码
## 首先进入mongodb容器,连接服务器
docker exec -it <container_id> /bin/bash
docker exec -it mongodb bash
## 不需要用户名
mongo
## 切换到admin数据库创建用户
use admin
db.createUser({
user:"root",
pwd:"1234",
roles:[{
role:'root',
db:'admin'
}]
})
## 控制台进入
db.auth('root', '1234')
# 测试用户
mongo ip/admin -u test -p
连接
# 创建用户成功,退出连接并使用该用户连接:
mongo 127.0.0.1/admin -u root -p
## 未开启授权验证时连接mongodb的url
mongodb://127.0.0.1:27017
## 开启授权验证时之后的url
mongodb://root:1234@127.0.0.1:27017/dbname
配置文件
# mongodb.conf
#端口
port = 27017
#以守护程序的方式启用,即在后台运行
fork = true
# nohttpinterface = true 这个配置需要去掉,不然会出现一个如下错误
# Error parsing INI config file: unrecognised option 'nohttpinterface'
auth=true
bind_ip=0.0.0.0
logappend=true
logpath=/data/log/logs.log