一侧戴、實驗環(huán)境
操作系統(tǒng):CentOS7.5 Minimal
IP: 192.168.1.105
二、安裝docker颈嚼,拉取mongoDB鏡像
【Docker】CentOS7.x上docker的安裝方式
http://www.reibang.com/p/d1a07a13a76f
#?docker pull mongo:4.2
# docker run -it --rm mongo:4.2 cat /etc/issue
# docker run -it --rm mongo:4.2 cat /etc/passwd
# docker run -it --rm mongo:4.2 mongo --version
三脂倦、創(chuàng)建相關(guān)安裝目錄
# mkdir? -p? ?/opt/mongoconfig
# mkdir? -p? /opt/mongoconfigdb
# mkdir? -p??/opt/mongodata
拷貝原始配置文件模板
# docker run -it --rm mongo:4.2 cat /etc/mongod.conf.orig > /opt/mongoconfig/mongod.conf
#? cat??/opt/mongoconfig/mongod.conf
三、初始化mongDB容器
#??docker run -it -d \
? --name mongod \
? -p 27017:27017? \
? -v /opt/mongoconfigdb:/data/configdb \
? -v /opt/mongodata:/data/db \
? mongo:4.2?
登錄mongDB委粉,創(chuàng)建管理員賬號
#? docker exec -it mongod mongo
>? db.createUser({ user: 'admin', pwd: 'Admin@123', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
修改配置文件,增加身份認(rèn)證
# grep -Ev "^$|^#" /opt/mongoconfig/mongod.conf
###########################################
storage:
? dbPath: /data/db
? journal:
? ? enabled: true
systemLog:
? destination: file
? logAppend: true
? path: /dev/stdout
net:
? port: 27017
? bindIp: 0.0.0.0
processManagement:
? timeZoneInfo: /usr/share/zoneinfo
security:
? authorization: enabled
###########################################
#? vim??/opt/mongoconfig/mongod.conf
一開始就開啟了auth認(rèn)證娶桦,是不能創(chuàng)建用戶的贾节,必須先以普通方式啟動
創(chuàng)建好用戶后,再以認(rèn)證方式啟動衷畦,才能以用戶名加密碼的方式連接氮双。
重啟mongoDB
# docker rm -f? mongod
# docker run -it -d \
? --name mongod \
? -p 27017:27017? \
? -v /opt/mongoconfigdb:/data/configdb \
? -v /opt/mongodata:/data/db \
? -v /opt/mongoconfig/mongod.conf:/etc/mongod.conf \
? mongo:4.2? mongod -f? /etc/mongod.conf
#? docker exec -it mongod? mongo -u admin -p "Admin@123" --authenticationDatabase admin
# docker logs? -f mongod
以 admin 用戶身份進(jìn)入mongo
# docker exec -it? mongod? mongo admin
對 admin 用戶 進(jìn)行身份認(rèn)證
>?db.auth("admin","admin@123");
創(chuàng)建 用戶、密碼和數(shù)據(jù)庫
>?db.createUser({ user: 'test', pwd: 'Test@123', roles: [ { role: "readWrite", db: "test" } ] });
# docker exec -it? mongod? mongo admin
> db.auth("test","Test@123");
> use test;
> db.test.save({name:"Michael"});
四霎匈、將服務(wù)注冊成系統(tǒng)服務(wù)
# docker rm -f? mongod
編寫unit文件
# vim /etc/systemd/system/mongod.service
############################################################
[Unit]
Description=mongoDB Server
Documentation=https://www.mongodb.com
After=network-online.target? docker.service
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker rm -f mongod
ExecStart=/usr/bin/docker run? \
? --name mongod \
? -p 27017:27017? \
? -v /opt/mongoconfigdb:/data/configdb \
? -v /opt/mongodata:/data/db \
? -v /opt/mongoconfig/mongod.conf:/etc/mongod.conf \
? mongo:4.2 mongod -f /etc/mongod.conf
ExecStop=/usr/bin/docker stop mongod
LimitNOFILE=65535
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
############################################################
#?? systemctl daemon-reload
#?systemctl start mongod.service
#?systemctl enable mongod.service
# systemctl status mongod.service
五、參考
CentOS7.x上使用docker安裝部署mongoDB
http://www.reibang.com/p/cf73f9a6d2d8
mongodb 開啟密碼認(rèn)證配置
https://wp.hellocode.name/?p=844
mongodb 開啟認(rèn)證方式
https://www.cnblogs.com/Knight7971/p/10149643.html
mongod.conf documentation
http://docs.mongodb.org/manual/reference/configuration-options
mongoDB Production Notes
https://docs.mongodb.com/manual/administration/production-notes