专栏首页运维录使用 Docker 部署 mongodb 应用

使用 Docker 部署 mongodb 应用

《毒液:致命守护者 Venom (2018)》这牙口就问你怕不怕!

开始之前


MongoDB 是一个基于分布式文件存储的数据库。旨在为 WEB 应用提供可扩展的数据存储解决方案。

在容器时代应用积极拥抱容器化,幸运的是mongo团队在Docker Hub提供了官方维护的mongo镜像。

本篇文章发布于2016-10-19 ,记录初次尝试使用 docker 创建一个mongo容器的过程。

今天基于 mongo:3 镜像再次测试文章仍然有效

环境描述

宿主机: CentOS 7.2       # 建议使用 ubuntu 最新LTS版本
Docker: 1.10.3          # 建议使用最新 stable版本
镜像: mongo:3           

操作步骤


1. 下载镜像

docker pull mongo:3

2. 创建容器

注意,由于容器特性我们需要为 mongo容器指定持久化的数据卷,使用-v参数选项。

docker run -tid --name mongo3 \
    -e TZ=Asia/Chongqing \
    -v mongo-data:/data/db \
    mongo:3 --auth

如果你还不了解数据卷,请参考这篇文章《如何使用Docker数据卷?

如果你希望使用宿主机的端口,方便外部访问到mongo服务,需要使用-p 参数选项。

docker run -tid --name mongo3 \
    -e TZ=Asia/Chongqing \
    -p 27017:27017 \
    -v mongo-data1:/data/db \
    mongo:3 --auth

如果你希望创建容器时,自动加入认证信息,可以使用下面的环境变量。

docker run -tid --name mongo3 \
    --restart=always \
    -e TZ=Asia/Chongqing \
    -e MONGO_INITDB_ROOT_USERNAME=root \
    -e MONGO_INITDB_ROOT_PASSWORD=password \
    -p 27017:27017 \
    -v mongo-data2:/data/db \
    mongo:3 --auth

环境变量请参考: https://hub.docker.com/_/mongo

3. 登录容器

# 登陆 mongodb
docker exec -ti mongo3 mongo admin
MongoDB shell version v3.6.16
#省略...

>

4.# 验证容器

尝试在mongo中创建一个库并配置授权用户。

# 查看当前库
> db
admin

# 超级用户
> db.createUser({user:'root',pwd:'password', roles:[{role:'userAdminAnyDatabase', db:'admin'}]})
Successfully added user: {
    "user" : "root",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

# 认证用户
> db.auth('root','password')
1
# 返回值 0:代表授权失败, 1:代表授权成功

# 切换库
> use demo
switched to db demo

# 授权用户
> db.createUser({user:'demo',pwd:'password',roles:[{role:"dbAdmin",db:"demo"}]})
Successfully added user: {
    "user" : "demo",
    "roles" : [
        {
            "role" : "dbAdmin",
            "db" : "demo"
        }
    ]
}

更多 mongo shell 命令请参考:http://zongming.net/read-1226

小结


最后来总结下文章中的知识点

  • MongoDB 是一个基于分布式文件存储的数据库。
  • mongo团队在 Docker Hub提供了官方维护的mongo镜像。
  • 更多镜像信息,请参考: https://hub.docker.com/_/mongo

公众号回复 docker 获得文章专题

欢迎加入QQ群: 703906133

欢迎关注微信公众号: 运维录

本文分享自微信公众号 - 运维录(gh_70d95b8f5f7c),作者:东南

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx 缓存服务器(番外)定制Docker镜像

    在 "nginx 缓存服务器(下)" 这篇文章中,我们讲解了如何使用 ngx_cache_purge模块主动清理缓存,不过默认的 nginx镜像是不包含 ngx...

    用户1560186
  • 把 Docker镜像装到仓库需要几步?

    使用docker tag 命令为镜像打上标记,比如为网易蜂巢(已改名网易云)镜像仓库推送镜像,首先需要为镜像做好标记;

    用户1560186
  • 如何为Nginx配置keep-alive超时时间?

    不过就像所有事物都有两面性,keep-alive 在某些场景可能也会有不足之处,例如就算是在空闲状态下它还是会消耗服务器资源,因此你可以根据自己的实际需求调整 ...

    用户1560186
  • 在Docker中安装MongoDB

    访问mongodb的镜像仓库地址:https://hub.docker.com/_/mongo?tab=tags&page=1

    Peyshine
  • 开启GTID主从同步出现1236错误问题

    最近遇到mysql开启gtid做复制时,主从同步断开,从库出现1236错误,导致同步无法进行,本文就这问题记录下处理步骤

    SEian.G
  • R编程之路_函数参数

    西游东行
  • 【Go语言绘图】gg 库的基本使用

    最近接了个比较大的需求,需要做很多图片处理的事情,比如图片的旋转裁截拼接,各种渐变处理,文字排列,一开始光是想想就头疼。但没有办法,既然已经需求已经到手上了,那...

    弗兰克的猫
  • 数据类增加nonNull字段反序列化的坑

    那么后来,万恶的产品经理该需求啦,说这个 Person 里面还需要有一个公司,也就是我们要改成:

    bennyhuo
  • Python3 序列解包

    Python 中有很多很实用的语法糖,这些语法糖可以帮助我们简化代码、更易理解等优点,接下里再看一个 Python3 中特别实用的语法序列解包(序列解包是 Py...

    py3study
  • eclipse安装svn插件的多种方式

    1.打开HELP->MyEclipse Configuration Center。切换到SoftWare标签页。

    大道七哥

扫码关注云+社区

领取腾讯云代金券