前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Docker 部署 mongodb 应用

使用 Docker 部署 mongodb 应用

作者头像
用户1560186
发布2020-01-13 15:48:10
2.9K0
发布2020-01-13 15:48:10
举报
文章被收录于专栏:运维录运维录

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

开始之前

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

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

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

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

环境描述
代码语言:javascript
复制
宿主机: CentOS 7.2       # 建议使用 ubuntu 最新LTS版本
Docker: 1.10.3          # 建议使用最新 stable版本
镜像: mongo:3           
操作步骤

1. 下载镜像

代码语言:javascript
复制
docker pull mongo:3

2. 创建容器

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

代码语言:javascript
复制
docker run -tid --name mongo3 \
    -e TZ=Asia/Chongqing \
    -v mongo-data:/data/db \
    mongo:3 --auth

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

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

代码语言:javascript
复制
docker run -tid --name mongo3 \
    -e TZ=Asia/Chongqing \
    -p 27017:27017 \
    -v mongo-data1:/data/db \
    mongo:3 --auth

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

代码语言:javascript
复制
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. 登录容器

代码语言:javascript
复制
# 登陆 mongodb
docker exec -ti mongo3 mongo admin
MongoDB shell version v3.6.16
#省略...

>

4.# 验证容器

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

代码语言:javascript
复制
# 查看当前库
> 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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 《毒液:致命守护者 Venom (2018)》这牙口就问你怕不怕!
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档