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
镜像。公众号回复 docker 获得文章专题
欢迎加入QQ群: 703906133
欢迎关注微信公众号: 运维录