TANKENQI.cn

July 2, 2024

docker 安装 mongo 的版本问题

Dockerdatabase1.6 min to read

今天在实验室服务器上使用docker安装mongoDB时,容器一直处于restart状态,通过docker logs 容器id查看到容器日志为: MongoDB 5.0+ requires a CPU with AVX support,得知机器的CPU不支持AVX指令集(服务器采用pve虚拟化,因此是kvm架构,虚拟cpu)

解决办法:采用低版本的mongo镜像进行安装,这里采用4.4.0版本进行演示

1 docker run 方式

# 拉取镜像docker pull mongo:4.4.0# 创建宿主机挂载目录【具体目录以自己实际情况创建】mkdir -p /home/docker/mongo/data/dbmkdir -p /home/docker/mongo/data/log# 创建和启动容器docker run -d --name mongo --restart=always -v /home/docker/mongo/data/db:/data/db -v /home/docker/mongo/data/log:/var/log/mongodb -p 27017:27017 --privileged=true mongo:4.4.0# 检查是否正常启动docker ps -a# 进入容器docker exec -it mongo mongo admin# 创建账号db.createUser({user:'admin',pwd:'123456',roles:['userAdminAnyDatabase']});

2 docker-compose 方式

2.1 编写yml文件

version: "3"  # 根据自己的docker-compose 版本进行配置services:  mongodb:    image: mongo:4.4.0 #根据需要选择自己的镜像    restart: always  # 我的是本地虚拟机,测试环境,不需要每次自动重启    container_name: mongo    ports:      - 27017:27017 #对外暴露停供服务的端口,正式生产的时候理论不用暴露。    volumes:      - /home/docker/mongo/data/db:/data/db # 前面是外面映射的,后面是容器内的挂载数据目录      - /home/docker/mongo/data/log:/var/log/mongodb  # 挂载日志目录`

2.2 启动

docker-compose -f mongo-docker-compose.yml up -d

2.3 创建用户

# 创建管理用户use admin;# 展示所有用户show users;# 为用户创建密码与角色db.createUser({user:'admin',pwd:'123456',roles:['userAdminAnyDatabase']});# 删除某个用户db.dropUser('root') ;# 切换至自己的业务库,将XXX替换成自己的库名use XXX;# 创建用户db.createUser({user:'XXX',pwd:'XXX',roles:[	{		"role" : "clusterAdmin",		"db" : "admin"	},	{		"role" : "readAnyDatabase",		"db" : "admin"	},	{		"role" : "readWrite",		"db" : "XXX"	}]});