解决docker中mongo报Restarting (132) 5 seconds ago
报的一直自动重启
原因是自建服务器的机器不支持avx指令
可以通过cat /proc/cpuinfo | grep avx or sudo cat /proc/cpuinfo | grep avx
查看你的系统是否支持avx 指令 ,如果有匹配的值说明是支持avx的,如果返回是空的,说明不支持avx。
将mongo 的版本下调至4.4版本。因为最新的mongo只能在支持amd64-avx的机器上运行,而4.4的版本可以在没有avx的机器运行的 ( 例如:docker pull mongo:4.4 )
删除原先的latest或不删按版本运行

#支持avx的机器
docker pull mongo:latest
mkdir -p /usr/docker/mongodb/data
mkdir -p /usr/docker/mongodb/conf
docker run \
-p 27017:27017 \
--name mongo \
-v /usr/docker/mongodb/data:/data/db \
-v /usr/docker/mongodb/conf:/etc/mongo
--restart always \
-d mongo:latest
#不支持avx的机器
docker pull mongo:4.4
docker run -itd --name mongo -p 27017:27017 mongo:4.4 --auth
// 参数解释
--auth:需要密码才能访问容器服务。
#数据库肯定要用户名密码才能访问,所以需要先创建一个用户,首先先进入docker下的mongo
docker exec -it mongo mongo admin
#然后创建一个用户,设置密码,并赋值该用户对数据库的操作权限,如果是为其它数据库创建用户是一样的操作,就是把db的值对应到数据库名
# 创建一个名为 admin,密码为123456的用户。
> db.createUser({user:'英文用户名',pwd:'密码',roles:['root']})
# 尝试使用上面创建的用户信息进行连接。
> db.auth('英文用户名', '密码')
#接着,通过命令切换到admin数据库下
use admin
#输入命令db.stats() 或者 show users,你可能会遇到错误 not authorized on admin to execute command…
如果报错了,那么说明此时还没有操作权限,需要进一步创建信息
db.auth("dev", "123456")
db.grantRolesToUser("dev", [ { role: "readWrite", db: "admin" } ])
成功


浙公网安备 33010602011771号