Docker MongoDB 部署

MongoDB 是一款较为常用的NOSQL 数据库,结合 Docker 使用,能实现轻松配置部署、迁移,本文以下为简要介绍如何在 Docker 中部署并使用 MongoDB。下文主要分为几个部分,内容如下:

  • MongoDB 镜像安装
  • MongoDB 容器创建
  • MongoDB 容器数据目录挂载
  • MongoDB 数据迁移
  • MongoDB 常用 Docker 命令

MongoDB Docker 镜像安装

MongoDB 提供官方镜像,下载安装镜像方法如下:

docker pull mongo

以上命令为安装 MongoDB 最新版本的镜像。

MongoDB Docker 容器创建

MongoDB Docker 容器创建有以下几个问题:
1- MongoDB 容器基本创建方法和数据目录挂载
2- MongoDB 容器的数据迁移
3- MongoDB 设置登录权限问题

MongoDB 容器基本创建方法和数据目录挂载

MongoDB 容器基本创建命令如下:

docker run -p 27017:27017 -v <LocalDirectoryPath>:/data/db --name docker_mongodb -d mongo

在上面的命令中,几个命令参数的详细解释如下:
-p 指定容器的端口映射,mongodb 默认端口为 27017
-v 为设置容器的挂载目录,这里是将<LocalDirectoryPath>即本机中的目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
--name 为设置该容器的名称
-d 设置容器以守护进程方式运行

mongodb container.jpeg

以上是 MongoDB 容器创建后的信息。
接下来,我们使用 Robo 3T 图形界面软件尝试打开数据库。
打开 RoBo 3T,选择新建连接,按照下图填入相关数据库信息,保存。
robo3t demo.jpeg

然后点击连接,数据库连接成功,界面如下图显示
robo3t connected.jpeg

这里我们可以看到,这是一个空的数据库。随后我们创建一个test_database的数据库,然后在创建一个test_collection的集合,再在这个集合中添加一个文档,文档内容为:

{'info': 'create success!'}

我们可以通过 RoBo 3T来查看目前数据库中数据的情况

robo3t data demo.jpeg

容器数据迁移

接下来,我们先停止刚才创建的 docker_mongodb 容器,命令如下:

docker stop docker_mongodb

然后我们再创建一个新的 MongoDB 容器,挂载刚才刚刚的数据目录,命令如下:

docker run -p 27017:27017 -v <LocalDirectoryPath>:/data/db --name docker_mongodb_migration -d mongo

我们可以容器查询命令,查看当前 Docker 的容器状态,命令如下:

docker container ls -a

这里的 -a 参数是查看所有的容器,包括已经停止的容器。

mongodb migration.jpeg

我们可以从输出结果看到,这时 docker_mongodb 的状态是 Exited,表示已经退出,而新创建的 docker_mongodb_migration 的状态显示为 Up,表明数据库正在运行。

然后我们再打开 RoBo 3T,连接数据库,可以看到我们看到我们再 docker_mongodb 中创建的数据,这里表明我们新创建的 docker_mongodb_migration 挂载的数据目录和 docker_mongodb 相同,利用这一方法,我们可以实现简单的数据迁移。

robo3t mongodb imgration.jpeg

MongoDB 的 Docker 常用命令

使用 Docker MongoDB 会使用到以下几个常用的命令。

查看当前运行的容器

# 查看正在运行的容器
docker container ls
# 查看所有容器
docker container ls -a

停止容器

# 指定 CONTAINER ID 停止容器
docker stop <CONTAINER ID>
# 指定容器名称停止容器
docker stop <CONTAINER NAME>

启动已经停止的容器

# 指定容器 CONTAINER ID 启动容器
docker start <CONTAINER ID>
# 指定容器名称启动容器
docker start <CONTAINER NAME>

重启已经运行的容器

# 指定容器 CONTAINER ID 重启容器
docker restart <CONTAINER ID>
# 指定容器名称重启容器
docker restart <CONTAINER NAME>

进入 mongo 交互模式

docker exec -it <CONTAINER NAME> mongo admin

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 6,252评论 0 115
  • 学习途径 docker官网教程(学习一样新东西最快的方法是去看官方文档,讲解的清楚,教程简单,但是包括的面十分的广...
    帅气的鱼先森阅读 1,987评论 4 20
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 11,042评论 17 145
  • 0x01 核心概念 Docker镜像类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统...
    闲云逸心阅读 1,967评论 0 8
  • /////////////////////////2016-11-8///////////////////////...
    javaMonkey阅读 36评论 0 0