一、环境准备:
操作系统:centos9 stream:5.14.0-522.el9.x86_64
docker版本:27.3.1
由于最近镜像加速器也被禁的很厉害,很多要么申请白名单,要么得像阿里一样申请二级域名;
可惜配置了申请的阿里域名依然还是连不上docker hub,
{ "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"] }
报错:
docker pull mongo:latest Trying to pull repository docker.io/library/mongo ... Get https://registry-1.docker.io/v2/: read tcp 192.168.240.86:43020->54.198.86.24:443: read: connection reset by peer
一般搜索发现不少国内的镜像依然可以使用,而且速度很给力,例如渡渡鸟:https://docker.aityp.com/
二、pull 最新mongo镜像
sudo docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/mongo:7.0.12
pull 成功
三、创建镜像
(1)提前创建数据卷目录
/data/db
/data/configdb
/data/logs
文件: /data/configdb/mongod.conf
(2)创建容器:
sudo docker run -d --name mongodb -p 27017:27017 --privileged=true --restart=always -v /data/db:/data/db -v /data/configdb:/data/configdb -v /data/logs:/data/log/ swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/mongo:7.0.12 -f /data/configdb/mongod.conf --auth
-d 后台运行
-p 映射端口
--privileged 以root 用户身份在容器内运行
--restart 自动重启容器
-v 容器卷
-f 指明配置文件路径 容器以容器内的配置文件启动
--auth mongo开启安全认证,需要账号密码才能访问
容器启动成功
如果遇到status 是restarting的说明启动失败,可以通过 docker logs mongdodb来查看具体错误内容
(3)查看mongodb版本
docker exec -it mongodb /bin/bash --进入容器
mongod -version --查看版本
四、创建账号
(1)使用以下命令添加用户和设置密码,并且尝试连接。
$ docker exec -it mongo mongo admin # 创建一个名为 admin,密码为 admin 的用户。
docker exec -it mongo mongosh admin
#mongoDB 6.0以上版本用这个指令
成功结果如下:
(2)创建用户
admin> db.createUser({ user:'admin',pwd:'admin',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); { ok: 1 }
user:'
admin'
: 用户名pwd:'
admin'
: 密码{ role:'userAdminAnyDatabase', db: 'admin'}
:admin
数据库,赋予用户所有数据权限readWriteAnyDatabase
: 赋予用户读写权限
(3)对于已经创建用户,再次进入容器中,可以直接通过执行启动mongoShell ;
mongo #mongoDB在默认的路径下直接使用的指令
mongo localhost 27017 # 不在默认路径下的执行 mongo --host mongodb_host --port mongodb_port
(4)连接并测试
# 尝试使用上面创建的用户信息进行连接。 admin> db.auth('admin', 'admin') { ok: 1 }
(5)测试
admin> db.user.insertOne({"name":"AAAA","age":20}); { acknowledged: true, insertedId: ObjectId("65bb0bd014d263b58b6251b1") }
(6)查询
## 查询 admin> db.user.find(); [ { _id: ObjectId("65bb0bd014d263b58b6251b1"), name: 'AAAA', age: 20 } ]标签:mongo,--,mongoDB,db,admin,docker,data From: https://www.cnblogs.com/sucretan2010/p/18495951