第17章 Docker 中 MongoDB 的安装与配置及使用
2018-10-14
文章目录
前言
-
为什么要使用 MongoDB?
Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调。
-
什么是 MongoDB?
MongoDB文档数据库提供高可用性和易扩展性。
-
什么是 Docker?
具体请参考我的第08章内容。
-
为什么要在 Docker 中安装 MongoDB?
为了开发环境一致性、可移植性、易于管理和维护性。
目标
- 完成 Jenkins 在 Docker 中的安装与配置。
- 安装在 Docker 中的 Jenkins 能正常对外提供服务。
- 在外部开发环境中能正常访问和使用 Jenkins 持续集成服务。
环境
- **VMware:**VMware Workstation 14 Pro
- **Linux:**CentOS7.4
- **Docker:**18.06.0-ce, build 0ffa825
- **Jenkins:**Jenkins2.121.1
- **JDK:**jdk1.8.0_172
- MongoDB:
介绍
RabbitMQ是一个开源的多协议消息代理。
支持的标签和相应的Dockerfile链接
3.7.7
,3.7
,3
,latest
(3.7/debian/Dockerfile)3.7.7-management
,3.7-management
,3-management
,management
(3.7/debian/management/Dockerfile)3.7.7-alpine
,3.7-alpine
,3-alpine
,alpine
(3.7/alpine/Dockerfile)3.7.7-management-alpine
,3.7-management-alpine
,3-management-alpine
,management-alpine
(3.7/alpine/management/Dockerfile)3.6.16
,3.6
(3.6/debian/Dockerfile)3.6.16-management
,3.6-management
(3.6/debian/management/Dockerfile)3.6.16-alpine
,3.6-alpine
(3.6/alpine/Dockerfile)3.6.16-management-alpine
,3.6-management-alpine
(3.6/alpine/management/Dockerfile)
快速参考(Quick reference)
- Where to get help:
the Docker Community Forums, the Docker Community Slack, or Stack Overflow - Where to file issues:
https://github.com/docker-library/mongo/issues - Maintained by:
the Docker Community - Supported architectures: (more info)
amd64
,arm64v8
,windows-amd64
- Published image artifact details:
repo-info repo’srepos/mongo/
directory (history)
(image metadata, transfer size, etc) - Image updates:
official-images PRs with labellibrary/mongo
official-images repo’slibrary/mongo
file (history) - Source of this description:
docs repo’smongo/
directory (history) - Supported Docker versions:
the latest release (down to 1.6 on a best-effort basis)
什么是MongoDB?
MongoDB(来自“humongous”)是一个跨平台的面向文档的数据库。 MongoDB被归类为NoSQL数据库,它避开了传统的基于表的关系数据库结构,支持使用动态模式的类似JSON的文档(MongoDB调用BSON格式),使得某些类型的应用程序中的数据集成更容易,更快捷。 MongoDB是在GNU Affero通用公共许可证和Apache许可证的组合下发布的,是免费的开源软件。
软件公司10gen(现为MongoDB公司)于2007年10月首次开发,作为计划平台即服务产品的一部分,该公司于2009年转向开源开发模式,10gen提供商业支持和其他服务。从那时起,MongoDB被许多主要网站和服务采用为后端软件,包括Craigslist,eBay,Foursquare,SourceForge,Viacom和纽约时报等。 MongoDB是最流行的NoSQL数据库系统。
如何使用此镜像
启动mongo服务器实例
$ docker run --name some-mongo -d mongo:tag
…其中some-mongo是您要分配给容器的名称,而tag是指定所需MongoDB版本的标记。请参阅上面的列表以获取相关标签。
$ sudo docker run -p 27017:27017 --name mongodb -e $PWD/db:/data/db -d mongo:4.0.3
-p 27017:27017:
将容器的 27017 端口映射到主机的 27917 端口(端口可以自己定义)
-e $PWD/db:/data/db:
将主机中当前目录下的 db 挂载到容器的/data/db
,作为 mongo 数 据存储目录
数据库管理客户端:https://www.robomongo.org/
从另一个Docker容器连接到MongoDB
映像中的MongoDB服务器侦听标准MongoDB端口27017,因此通过容器链接或Docker网络连接将与连接到远程mongod相同。下面的示例启动另一个MongoDB容器实例,并从上面的示例中针对原始MongoDB容器运行mongo命令行客户端,允许您对数据库实例执行MongoDB语句:
$ docker run -it --link some-mongo:mongo --rm mongo mongo --host mongo test
…其中some-mongo是原始mongo容器的名称。
…通过docker stack deploy或docker-compose
compose
mongo的示例stack.yml:
# Use root/example as user/password credentials
version: '3.1'
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
运行docker stack deploy -c stack.yml mongo
(或docker-compose -f stack.yml up
),等待它完全初始化,然后访问http://swarm-ip:8081,http://localhost:8081,或http://host-ip:8081(视情况而定)。
容器shell访问和查看MongoDB日志
docker exec
命令允许您在Docker容器内运行命令。以下命令行将在mongo
容器中为您提供一个bash shell:
$ docker exec -it some-mongo bash
MongoDB服务器日志可通过Docker的容器日志获得:
$ docker logs some-mongo
Configuration
有关使用和配置 MongoDB manual (如副本集和分片)的信息,请参阅MongoDB手册。
无需配置文件即可自定义配置
使用
进入admin数据库
首先进入mongo容器,然后进入admin数据库
$ sudo docker exec -it mongo3.6 bash
mongo admin
$ sudo docker exec -it mongo3.6 mongo admin
创建账户
- 创建管理员账号(拥有所有权限)
db.createUser({
user: 'root',
pwd: 'admin',
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
});
- 开启验证
db.auth("root","admin");
现在我们使用图形化界面工具连接一下我们刚创建的数据库,看看是否成功
本人使用 Robo 3T 工具
- 打开软件 点击左上角 创建一个连接配置,如图 地址写刚才docker对应的ip地址 端口号填写刚才配置的,点击Test按钮 如图提示,表明可连接mongo成功
参考
https://hub.docker.com/_/mongo/
使用 Robo 3T 工具
- 打开软件 点击左上角 创建一个连接配置,如图 地址写刚才docker对应的ip地址 端口号填写刚才配置的,点击Test按钮 如图提示,表明可连接mongo成功
参考
https://hub.docker.com/_/mongo/
https://juejin.im/