内容简介:密码登录+容器数据共享,主从复制添加配置文件夹,组织容器命令。从测试容器中匹配搜索得到 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 实现文档检测功能
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Practical Algorithms for Programmers
Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99
Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!