Docker 中使用 MongoDB

如果是国内的话,可在阿里云上可以找到 docker 镜像:
https://dev.aliyun.com/

搜索 “mongo”,可以找到 MongoDB 官方镜像。

... //连接阿里云 registry 过程省略,见官方文档
docker pull mongo   //下载 mongo 镜像
docker images   //下载完毕后查看镜像信息

//--name 指定容器名称
//-p 指定端口映射规则,这样在外部可以通过docker主机IP访问mongo,MongoDB默认端口27017
//-i 是否使用交互式命令行(例如在容器启动时,执行shell脚本)
//-t 表示启用伪终端(TTY)
//-d 表示容器在后台运行
//-v 创建一个卷并绑定挂载点(类似目录映射,实现host和container文件共享)
docker run -p <主机端口>:<容器端口> -td --name <容器名称> <镜像ID或镜像名>

启动后,可以看到 PORTS 列给出了主机端口和容器端口

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
2ee4137bd919        mongo        "docker-entrypoint..."   4 seconds ago       Up 3 seconds        0.0.0.0:27017->27017/tcp   my_data

通过docker进入mongo的shell

docker exec -it <容器名或ID> <命令行命令> <参数>

PS: 如果已经有容器在运行了,想要改变端口,则可以从容器创建一个镜像,然后删除原来的容器,用以上命令再次从镜像启动容器即可。

创建用户

user: 用户名 
pwd: 密码明文 
role: 用户角色 
db: 该用户将创建到哪个数据库中
db.createUser({ user: 'uname', pwd: 'upwd', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

MongoDB 重要参数,可通过-v参数进行映射。

//数据根目录
/data/db