利用 Docker 运行 MongoDB
在服务器上安装MongoDB很是繁琐,而通过 Docker 运行 MongoDB很是方便,数据迁移也变得更加简单,日常的运维和使用与本地安装基本没有区别。
Docker系列文章
Linux 安装 Docker
使用Docker Gogs搭建git服务
利用 Docker 运行 MongoDB
准备工作
安装docker,参考文章Linux 安装 Docker
查找官方镜像
查找Docker Hub上的 mongo 镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| sudo docker search mongo NAME DESCRIPTION STARS OFFICIAL AUTOMATED mongo MongoDB document databases provide high avai… 4916 [OK] mongo-express Web-based MongoDB admin interface, written w… 288 [OK] tutum/mongodb MongoDB Docker image – listens in port 27017… 224 [OK] mvertes/alpine-mongo light MongoDB container 79 [OK] mongoclient/mongoclient Official docker image for Mongoclient, featu… 54 [OK] bitnami/mongodb Bitnami MongoDB Docker Image 46 [OK] frodenas/mongodb A Docker Image for MongoDB 17 [OK] mongooseim/mongooseim Small docker image for MongooseIM - robust a… 16 mongooseim/mongooseim-docker MongooseIM server the latest stable version 11 [OK] cvallance/mongo-k8s-sidecar Kubernetes side car to setup and maintain a … 8 [OK] centos/mongodb-26-centos7 MongoDB NoSQL database server 5 centos/mongodb-32-centos7 MongoDB NoSQL database server 5 istepanov/mongodump Docker image with mongodump running as a cro… 5 [OK] eses/mongodb_exporter mongodb exporter for prometheus 4 [OK] khezen/mongo MongoDB Docker image supporting RocksDB stor… 4 [OK] neowaylabs/mongodb-mms-agent This Docker image with MongoDB Monitoring Ag… 2 [OK] centos/mongodb-36-centos7 MongoDB NoSQL database server 2 centos/mongodb-34-centos7 MongoDB NoSQL database server 1 openshift/mongodb-24-centos7 DEPRECATED: A Centos7 based MongoDB v2.4 ima… 1 ekesken/mongo docker image for mongo that is configurable … 1 [OK] webhippie/mongodb Docker images for mongodb 1 [OK] circleci/mongo CircleCI images for MongoDB 1 [OK] amd64/mongo MongoDB document databases provide high avai… 0 quilt/mongo MongoDB container for quilt.io 0 [OK] ansibleplaybookbundle/mongodb-apb An APB to deploy MongoDB. 0 [OK]
|
这里我们拉取官方的最新镜像
等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mongo的镜像。
1 2
| REPOSITORY TAG IMAGE ID CREATED SIZE mongo latest a41c82c0998a 11 days ago 380MB
|
运行 mongo 镜像
mongo镜像官方文档
1
| docker run --name mongo -p 27017:27017 -v /data/db:/data/db -d mongo --auth
|
—-name
指定镜像的名字,如果不指定会使用 Docker 镜像 ID。
-p 27018:27017
官方的 mongo 镜像默认端口是27017,我们将它映射到主机的端口上27018。 27018端口可自定义,但是不能是在使用的接口。
-v /data/db:/data/db
-v 是挂载路径,将 mongo 镜像里的目录挂载到本地目录,mongo 镜像默认目录是/data/db。
-d
在后台运行。
—auth
以 auth 模式运行 mongo。
然后执行一下 docker ps 确认一下库已经正常运行起来。
1 2
| CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 20e0be4e4a7e mongo "docker-entrypoint.s…" 7 days ago Up 7 days 0.0.0.0:20188->27017/tcp mongo
|
连接 mongo 镜像
使用 docker exec
命令连接 mongo 镜像
1
| docker exec -it mongo /bin/bash
|
更多的请看文档-Docker exec 命令
创建用户和数据库
1、 切换到admin数据库
2、创建管理员账户
1
| db.createUser({ user: 'admin', pwd: 'admin_password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
|
3、为创建的管理员账户进行授权
1
| db.auth("admin","admin_password");
|
4、切换到指定数据库(如不存在会自动创建,默认是没有数据的,执行show dbs
并不会显示出来)
5、创建test库下的用户
1
| db.createUser({ user: 'test', pwd: 'test_password', roles: [{ role: "readWrite", db: "test" }] });
|
链接数据库
shell链接数据库:
1
| mongo 127.0.0.1:27018/test -u test -p test_password
|
标准 URI 连接语法:
参考资源
Docker 安装 MongoDB
MongoDB - 连接
mongo镜像官方文档
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Div-wang!