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