Div-wang

利用 Docker 运行 MongoDB

在服务器上安装MongoDB很是繁琐,而通过 Docker 运行 MongoDB很是方便,数据迁移也变得更加简单,日常的运维和使用与本地安装基本没有区别。

准备工作

安装docker,参考文章Linux 安装 Docker

查找官方镜像

查找Docker Hub上的 mongo 镜像

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 27017224                                     [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]

这里我们拉取官方的最新镜像

docker pull mongo

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mongo的镜像。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mongo               latest              a41c82c0998a        11 days ago         380MB

运行 mongo 镜像

mongo镜像官方文档

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 确认一下库已经正常运行起来。

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 镜像

docker exec -it mongo /bin/bash

更多的请看文档-Docker exec 命令

创建用户和数据库

1、 切换到admin数据库

use admin

2、创建管理员账户

db.createUser({ user: 'admin', pwd: 'admin_password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

3、为创建的管理员账户进行授权

db.auth("admin","admin_password");

4、切换到指定数据库(如不存在会自动创建,默认是没有数据的,执行show dbs并不会显示出来)

use test

5、创建test库下的用户

db.createUser({ user: 'test', pwd: 'test_password', roles: [{ role: "readWrite", db: "test" }] });

链接数据库

shell链接数据库:

mongo 127.0.0.1:27018/test -u test -p test_password

标准 URI 连接语法:

mongodb://test:test_password@127.0.0.1:27018/test

参考资源

Docker 安装 MongoDB
MongoDB - 连接
mongo镜像官方文档

关注我的公众号
支付宝领红包