拉取镜像

  1. docker search mongo
  1. docker pull mongo

创建挂载目录

  1. mkdir datadb

启动mongodb

  1. docker run -d --name mongodb -v /root/xxx/mongo/datadb:/data/db -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=mongo@123 --privileged=true mongo

参数解释docker run # 启动容器
-d # 后台运行容器
—name mongodb # 自定义命名
-v /root/xxx/mongo/datadb:/data/db #挂载目录
-p 27017:27017 #端口(宿主机:容器)
-e MONGO_INITDB_ROOT_USERNAME=root # 指定用户名
-e MONGO_INITDB_ROOT_PASSWORD=mongo@123 # 指定密码
—privileged=true # 使得容器内的root拥有真正的root权限。否则,容器内的root只是外部的一个普通用户权限
mongo # 指定启动版本(宿主机没有则立即下载)

  1. docker logs mongodb

测试连接(无数据库)

无数据的root用户
image.png

进入容器

  1. docker exec -it mongodb /bin/bash
  1. mongo

image.png

  1. # 进入默认的admin数据库
  2. use admin
  3. # 验证密码
  4. db.auth('root','mongo@123')
  5. # 查看数据库
  6. show dbs

image.png
默认数据库
image.png
注意:此处验证用户和密码是由于在创建容器时指定用户和密码验证,如果不进行验证,在后面创建新数据库和用户会出现需要权限验证的提示
image.png

创建用户和数据库

  1. # 切换数据库(没有则自动创建)
  2. use ibim
  3. # 创建用户和指定数据库
  4. db.createUser({user:"mongo",pwd:"mongo@123",roles:[{role:"dbOwner",db:"ibim"}]})
  5. # 验证用户
  6. db.auth('mongo','mongo@123')

image.png

测试连接(有数据库)

有数据库的mongo用户
image.png