在Docker容器中下载并运行MongoDB

MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。

Docker
发布于 2019-03-09 阅读 503

查看可用的 MongoDB 版本

访问 MongoDB 镜像库地址: https://hub.docker.com/_/mongo?tab=tags&page=1。可以通过 Sort by 查看其他版本的 MongoDB,默认是最新版本 mongo:latest。

MongoDB 此外,我们还可以用 docker search mongo 命令来查看可用版本:

$ docker search mongo
NAME                          DESCRIPTION                      STARS
mongo                         MongoDB document databases ...   1989         
mongo-express                 Web-based MongoDB admin int...   22          
mvertes/alpine-mongo          light MongoDB container          19    
mongooseim/mongooseim-docker  MongooseIM server the lates...   9     
torusware/speedus-mongo       Always updated official Mon...   9     
jacksoncage/mongo             Instant MongoDB sharded cluster  6     
mongoclient/mongoclient       Official docker image for M...   4     
jadsonlourenco/mongo-rocks    Percona Mongodb with Rocksd...   4      
asteris/apache-php-mongo      Apache2.4 + PHP + Mongo + m...   2      
19hz/mongo-container          Mongodb replicaset for coreos    1      
nitra/mongo                   Mongo3 centos7                   1    
ackee/mongo                   MongoDB with fixed Bluemix p...  1   
kobotoolbox/mongo             https://github.com/kobotoolb...  1     
valtlfelipe/mongo             Docker Image based on the la...  1     

安装

取最新版的 MongoDB 镜像

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

$ docker pull mongo:latest

查看本地镜像

$ docker images

运行容器

安装完成后,我们可以使用以下命令来运行 mongo 容器:

docker run -p 27017:27017 -v /home/mongo/data/db:/data/db --name my-mongo -d mongo --auth

参数说明:

-p 27017:27017:映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。 -v /home/mongo/data/db:/data/db: 把一个宿主机上的目录 /home/mongo/data/db 挂载到镜像 /data/db--name my-mongo:命名容器名称 --auth:需要密码才能访问容器服务。

查看运行信息

最后我们可以通过 docker ps 命令查看容器的运行信息

使用 MongoDB

接着使用以下命令添加用户和设置密码,并且尝试连接。

$ docker exec -it my-mongo mongo admin

my-mongo 是容器名称,这里也可以是容器ID

创建一个名为 admin,密码为 123456 的用户。

> db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});

尝试使用上面创建的用户信息进行连接。

> db.auth('root', '123456')
```## 查看可用的 MongoDB 版本
访问 MongoDB 镜像库地址: [https://hub.docker.com/_/mongo?tab=tags&page=1](https://hub.docker.com/_/mongo?tab=tags&page=1)。可以通过 Sort by 查看其他版本的 MongoDB,默认是最新版本 mongo:latest。

![MongoDB](mongo-version.png)
此外,我们还可以用 `docker search mongo` 命令来查看可用版本:

```bash
$ docker search mongo
NAME                          DESCRIPTION                      STARS
mongo                         MongoDB document databases ...   1989         
mongo-express                 Web-based MongoDB admin int...   22          
mvertes/alpine-mongo          light MongoDB container          19    
mongooseim/mongooseim-docker  MongooseIM server the lates...   9     
torusware/speedus-mongo       Always updated official Mon...   9     
jacksoncage/mongo             Instant MongoDB sharded cluster  6     
mongoclient/mongoclient       Official docker image for M...   4     
jadsonlourenco/mongo-rocks    Percona Mongodb with Rocksd...   4      
asteris/apache-php-mongo      Apache2.4 + PHP + Mongo + m...   2      
19hz/mongo-container          Mongodb replicaset for coreos    1      
nitra/mongo                   Mongo3 centos7                   1    
ackee/mongo                   MongoDB with fixed Bluemix p...  1   
kobotoolbox/mongo             https://github.com/kobotoolb...  1     
valtlfelipe/mongo             Docker Image based on the la...  1     

安装

取最新版的 MongoDB 镜像

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

$ docker pull mongo:latest

查看本地镜像

$ docker images

运行容器

安装完成后,我们可以使用以下命令来运行 mongo 容器:

docker run -p 27017:27017 -v /home/mongo/data/db:/data/db --name my-mongo -d mongo --auth

参数说明:

-p 27017:27017:映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。 -v /home/mongo/data/db:/data/db: 把一个宿主机上的目录 /home/mongo/data/db 挂载到镜像 /data/db--name my-mongo:命名容器名称 --auth:需要密码才能访问容器服务。

查看运行信息

最后我们可以通过 docker ps 命令查看容器的运行信息

使用 MongoDB

接着使用以下命令添加用户和设置密码,并且尝试连接。

$ docker exec -it my-mongo mongo admin

my-mongo 是容器名称,这里也可以是容器ID

创建一个名为 admin,密码为 123456 的用户。

> db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});

尝试使用上面创建的用户信息进行连接。

> db.auth('root', '123456')
  • 本文类型: 原创
  • 本文出处:
  • 版权说明: 本站内容均采用©BY-NC-SA许可协议,版权归作者和本站所有!欢迎转载,但未经作者同意必须在文章页面注明原文出处,否则保留追究法律责任的权利。

坤尘记

I AM KUNCHEN!思绪如风,总会在某处停留;用轻灵的文字书写关于技术生活的奇思妙想。

浙ICP备2020045526号