内容简介:密码登录+容器数据共享,主从复制添加配置文件夹,组织容器命令。从测试容器中匹配搜索得到 mongod.conf.orig,设置可以启动,网上查找配置项反不能启动,原因是配置是yaml格式!好像听说过。百度查询得到:官方
目标需求:
密码登录+容器数据共享,主从复制
1.配置启动
添加配置文件夹,组织容器命令。
a.官方“未提供”相关信息
从测试容器中匹配搜索得到 mongod.conf.orig,设置可以启动,网上查找配置项反不能启动,原因是配置是yaml格式!好像听说过。百度查询得到:官方 配置说明 ,网站卡得出奇。
b.启动配置
[]:~/tmp/dk/mongodb# docker run --rm --name mg1 -d mongo #默认数据目录 root@199665dc0d08:/# ls /data/db -lh total 268K -rw------- 1 mongodb mongodb 45 Jun 29 23:39 WiredTiger -rw------- 1 mongodb mongodb 21 Jun 29 23:39 WiredTiger.lock ... ...
# mongod.conf 删除了一些注释选项 # Where and how to store data. storage: #数据库数据存放目录 dbPath: /data/db #启用日志文件,默认启用 journal: enabled: true # where to write logging data. systemLog: destination: file logAppend: true #数据库日志存放目录? path: /var/log/mongodb/mongod.log #静默模式,过滤掉一些无用的日志信息 quiet: true # network interfaces net: port: 27017 bindIp: 192.168.0.4 security: 登录认证 authorization: "enable"
测试过程中主要错误有:
#对应命令 docker run -itd --name mg2 \ -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 \ -v /root/tmp/dk/mongodb/mongod.conf:/etc/mongod.conf \ -v /root/tmp/dk/mongodb/mongod.log:/var/log/mongod.log \ -v /root/tmp/dk/mongodb/data:/data/db \ -d mongo --auth --config /etc/mongod.conf Error saving history file: FileOpenFailed: Unable to open() file /home/mongodb/.dbshell: Unknown error #对应命令 ...-d mongo [mongod ]--config (/etc/mongod.conf|空白46) [main] ***** SERVER RESTARTED ***** [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none' killing process with pid: 30
这里mongod是处理参数的,没有不行,去掉d也不行,类似mysqld,结果正常的也就-d mongo mongod --auth结尾的。
其他还有无故错误可能是.conf配置的文件路径有问题,如:从上面得到的默认日志路径上级文件夹不存在(??bug),官方说明不清不楚,解决问题以减少配置为主,减少启动参数(逐个测试增加)。
c.运行容器
“意外的”官方 参考地址 ,多次尝试命令(最终):
[]:~/tmp/dk/mongodb# docker stop mg2 && docker rm mg2 && rm -rf /root/tmp/dk/mongodb/data/* && \ docker run -itd --name mg2 \ -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 \ -v /root/tmp/dk/mongodb/initdb:/home/mongodb/ \ -v /root/tmp/dk/mongodb/mongod.conf:/etc/mongod.conf \ -v /root/tmp/dk/mongodb/data:/data/db \ -d mongo mongod --auth
无法运行,带--config项时run后是exited状态,修改配置没反应(日志无报错、退出)。遂去除启动--config项。但这一切其实只是初始化而已。
后来测试发现是日志看多了,...-d mongo mongod --config /etc/mongod.conf结尾启动正常。
2.运行处理
a.加密数据、主从复制
这里只做简单配置(还有密钥文件认证),注意yaml双引号,添加:
security: enableEncryption: true #开启时默认如下 #encryptionCipherMode: "AES256-CBC" replication: oplogSizeMB: 20 #同步复制的日志大小设置,单位MB #All hosts in the replica set must have the same set name. replSetName: "repl" #secondaryIndexPrefetch: "all" #enableMajorityReadConcern: ture sharding: #shardsvr:a shard. The instance starts on port 27018 by default #configsvr:a config server. The instance starts on port 27019 by default. clusterRole: "shardsvr" #shardsvr|configsvr选一 #archiveMovedChunks: false
b.编写脚本添加
--权限:这边如果不是root登录的,要考虑对宿主机用户、容器用户使用的相关文件/夹进行授权。这里添加上面配置后容器反终止了,测试后,可以:先运行、再编辑配置文件、执行docker restart。数据库的关联操作同mysql,而比 mysql 更多的在命令交互界面执行。
#!/bin/bash docker stop mg1 && docker rm mg1 docker stop mg2 && docker rm mg2 docker stop mg3 && docker rm mg3 cp -f mongodb/mongod.conf mongodb.a/mongod.conf && cp -f mongodb/mongod.conf mongodb.b/mongod.conf #!!莫名其妙坑爹的问题 chmod 777 /root/tmp/dk/mongodb/mongod.log /root/tmp/dk/mongodb.a/mongod.log /root/tmp/dk/mongodb.b/mongod.log rm -rf /root/tmp/dk/mongodb/data/* #&& echo ''>/root/tmp/dk/mongodb/mongod.log docker run --name mg1 \ -p 27017:27017 \ -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 \ -v /root/tmp/dk/mongodb/mongod.conf:/etc/mongod.conf \ -v /root/tmp/dk/mongodb/mongod.log:/var/log/mongod.log \ -v /root/tmp/dk/mongodb/data:/data/db \ -d mongo mongod --config /etc/mongod.conf rm -rf /root/tmp/dk/mongodb.a/data/* #&& echo ''>/root/tmp/dk/mongodb.a/mongod.log docker run --name mg2 \ -p 27018:27017 \ -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 \ -v /root/tmp/dk/mongodb.a/mongod.conf:/etc/mongod.conf \ -v /root/tmp/dk/mongodb.a/mongod.log:/var/log/mongod.log \ -v /root/tmp/dk/mongodb.a/data:/data/db \ -d mongo mongod --config /etc/mongod.conf rm -rf /root/tmp/dk/mongodb.b/data/* #&& echo ''>/root/tmp/dk/mongodb.b/mongod.log docker run --name mg3 \ -p 27019:27017 \ -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 \ -v /root/tmp/dk/mongodb.b/mongod.conf:/etc/mongod.conf \ -v /root/tmp/dk/mongodb.b/mongod.log:/var/log/mongod.log \ -v /root/tmp/dk/mongodb.b/data:/data/db \ -d mongo mongod --config /etc/mongod.conf
c.目前容器整体情况
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 531976d71fab mongo "docker-entrypoint.s…" 27 minutes ago Up 22 minutes 0.0.0.0:27019->27017/tcp mg3 4e60c4ef93eb mongo "docker-entrypoint.s…" 27 minutes ago Up 22 minutes 0.0.0.0:27018->27017/tcp mg2 4319ec04a69a mongo "docker-entrypoint.s…" 27 minutes ago Up 27 minutes 0.0.0.0:27017->27017/tcp mg1 2d65770f1e6c openresty/openresty "/usr/bin/openresty …" 21 hours ago Up 21 hours 0.0.0.0:82->80/tcp n2 2f0f0357aa69 openresty/openresty "/usr/bin/openresty …" 21 hours ago Up 21 hours 0.0.0.0:80->80/tcp n1 1c906a7afeba cffycls/redis5:1.6 "redis-server /etc/r…" 21 hours ago Up 21 hours 0.0.0.0:6381->6379/tcp rs 5c71dcc1ab36 cffycls/redis5:1.6 "redis-server /etc/r…" 21 hours ago Up 21 hours 0.0.0.0:6379->6379/tcp rm 2b4c57614d22 mysql:8.0 "docker-entrypoint.s…" 2 days ago Up 30 hours 33060/tcp, 0.0.0.0:3308->3306/tcp ms 2635980cf576 mysql:8.0 "docker-entrypoint.s…" 2 days ago Up 30 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mm
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Hadoop运行在Kubernetes平台实践
- Kubernetes 入门实践:部署运行 Go 项目
- DOCKER学习_008:Docker容器的运行最佳实践
- 京东数科 | Kubernetes实践之contiv支持非docker容器运行时
- Linux 后台运行任务 nohup 结合 & 用法以及如何精准查找进程并 kill 后台任务实践
- 手机端运行卷积神经网络的一次实践 -- 基于 TensorFlow 和 OpenCV 实现文档检测功能
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
常用算法深入学习实录
张子言 / 电子工业出版社 / 2013-10 / 89.00元
对于任何一门编程语言来说,算法都是程序的“灵魂”。正是因为算法如此重要,所以笔者精心编写了本书,希望通过书中的内容引领广大读者一起探讨学习算法的奥秘,带领广大读者真正步入程序开发的高级世界。 本书共分15章,循序渐进、由浅入深地详细讲解算法的核心内容,并通过具体实例的实现过程演练各个知识点的具体用法。本书首先详细讲解算法的基础知识,剖析了将算法称为“程序灵魂”的原因。然后详细讲解算法技术的核......一起来看看 《常用算法深入学习实录》 这本书的介绍吧!