docker-compose 安装nginx容器
(使用dockerfile创建的镜像)
创建c5.yaml
(具体内容见compose.yaml的示例3)
检查yaml配置文件
./compose -f c1.yaml config
创建+启动
--compatibility 非集群,不然报错
先创建后启动
compose -f xx.yaml up --compatibility --no-start
compose -f .yaml --compatibility up --no-start
单独启停
./compose up -d(./compose up -f a.yaml up -d)
./compose stop (./compose -f c1.yaml stop )
自定义文件或存在多个文件 -f xx
删除停止的容器
./compose -f c5.yaml rm
docker-compose 安装多redis
创建主机文件
mkdir -p /redis/{redis01/{data,log},redis02/{data,log},redis03/{data,log}}
touch /redis/{redis01/log/redis1.log,redis01/log/redis1.log}
chmod -R a+rw /redis
创建redis.yaml
(具体内容见compose.yaml的示例4)
检查yaml配置文件
./compose -f redis.yaml config
创建+启动
./compose -f redis.yaml --compatibility up -d
docker-compose 安装redis主从
redis主从必须使用单独配置文件,不能共用?
创建主机文件
mkdir -p redis-ms/ms01/{m/{data,log,conf},s/{data,log,conf}}
touch /redis-ms/ms01/{m/log/redis.log,s/log/redis.log}
cp redis.conf …
chmod -R a+rw /redis-ms/
创建redis-ms.yaml
(具体内容见compose.yaml的示例5)
修改redis配置文件
docker已经使用后台运行redis,所以daemonize 值为no,
redis从机配置文件增加 slaveof 172.16.0.2 6379
。。。
创建+启动
./compose -f redis.yaml --compatibility up -d
docker-compose 安装 单mongo
创建文件目录
mkdir -p /mongo/mongo_03/{data,conf,log}
vim mongo.conf (mongo.conf见配置表1)
chmod -R a+rw …
创建mongo.yaml
(具体内容见compose.yaml的示例6)
创建+启动
echo /mongorep/mongo_04/conf /mongorep/mongo_05/conf /mongorep/mongo_06/conf | xargs -n 1 cp -v mongo.conf
docker-compose 单机安装mongo副本集
创建mongo.yaml
(具体内容见compose.yaml的示例7)
创建mongo.conf
(mongo.conf见 配置表2)
创建文件目录
mkdir -p /mongorep/{mongo_04/{data,log,conf},mongo_05/{data,log,conf},mongo_06/{data,log,conf},ckye}
echo /mongorep/mongo_04/conf /mongorep/mongo_05/conf /mongorep/mongo_06/conf | xargs -n 1 cp -v mongo.conf
openssl rand -base64 100 >key 创建认证文件key
cp key …
chmod -R a+rw …
key权限严格: -rw-------. 1 polkitd root 139 7月 20 10:55 mongokey
chown 999 xxx
chmod 600 xxx
创建+启动
./compose -f mongo.yaml --compatibility up
调试可不用-d 后台运行
单独启停
./compose -f mongo.yaml --compatibility start
./compose -f mongo.yaml stop
连接任意mongo 执行:
rs.initiate() 初始化 输出中ok值为1时继续
rs.conf() 查看副本集配置
rs.add("172.16.0.15:27017") 当mongo变成primary时添加节点,成功会输出ok:1
rs.addArb("192.168.1.1:2900") 添加仲裁节点
rs.status() 当statestr:recovering状态代表启动正常,状态详情见函数
db.getMongo().setSlaveOk()
use admin
db.createUser({user: "r1", pwd: "123456",roles:[ "root"]})
关闭所有mongo
修改主副节点配置文件件,开启密码认证和key认证
启动
./compose -f mongo.yaml --compatibility up
docker exec -it mongo_04 /bin/bash
注意点 副本集不能使用 docker id 作为 mongo示例地址 ,id 变了 副本集无法正常运行
(compose 修改 docker 内的 hosts文件)
不要开启仲裁节点密码和key认证 否则副本集故障 无法正常运行(所有节点OTHER状态)
备用命令
docker rm {mongo_04,mongo_05,mongo_06}
rm -rf /mongorep/{mongo_06/{data/*,log/*},mongo_04/{data/*,log/*},mongo_05/{data/*,log/*}}
docker-compose 多机安装mongo副本集,使用普通用户管理
创建用户、用户组u1 uijknm
创建mongo配配置文件
(具体内容见compose.yaml的示例8)
创建compose配置文件
(mongo.conf见 配置表3)
创建文件目录
mkdir -p /mongorep/{mongo_04/{data,log,conf},ckye}
cp mongo.conf
openssl rand -base64 100 >key 创建认证文件key
chmod -R a+rw /mongorep/
key权限严格,设置:
chown 999 xxx
chmod 600 xxx
创建+启动
./compose -f mongo.yaml --compatibility up
调试可不用-d 后台运行
进入容器
docker exec -it mongo_04 /bin/bash
连接任意mongo 执行:
var vv={_id: "rep1",version: 1,members: [{ _id: 0, host : "mongo_200:20004" },{ _id: 1, host : "mongo_201:20004" },{ _id: 2, host : "mongo_202:20004" }]}
rs.initiate(vv) 初始化 输出中"ok" : 1时继续
rs.conf() 查看副本集配置
rs.status() 查看副本集状态,"stateStr" : "SECONDARY或PRIMARY代表正常
db.getMongo().setSlaveOk() 设置副本可读
use admin
db.createUser({user: "r1", pwd: "uijknm",roles:[ "root"]})
use db1
db.createUser({user: "db1",pwd: "123456",roles: [ { role: "dbOwner", db: "db1" } ]})
db.createUser({user: "db1rd",pwd: "123456",roles: [ { role: "readWrite", db: "db1" } ]})
db.createUser({user: "db1rd",pwd: "123456",roles: [ { role: "read", db: "db1" } ]})
db.createUser({user: "dbc7rw",pwd: "123456",roles: [ { role: "readWrite", db: "db_c7" } ]})
关闭所有mongo
修改主副节点配置文件:开启密码认证和key认证
设置key权限 严格:
sudo chown polkitd:u1 /mongorep/ckey/mongokey
chmod 600 /mongorep/ckey/mongokey
当使用u1用户时 key文件属主权限必须为下:否则报权限错误:
测试 ckey 必须a+x 否则报权限错误?
/mongorep/
├── [drwxrwxr-x u1 u1 ] ckey
│ └── [-rw------- polkitd u1 ] mongokey
启停命令
./compose -f mongo.yaml --compatibility up -d
./compose -f mongo.yaml --compatibility start
./compose -f mongo.yaml stop
docker start mongo_042
docker stop mongo_042
备用命令
sudo rm -rf /mongorep/mongo_04/{data/*,log/*}
docker rm $(docker container ls -aq)
dockerfile+compose 多nginx
dockerfile内容:
FROM nginx
RUN mkdir -p /nginx_file/{conf,accesslog,errlog,html}
COPY ./nginx.conf /nginx_file/conf/nginx.conf
RUN ln -s -f /nginx_file/conf/nginx.conf /etc/nginx/nginx.conf
RUN rm -rf /etc/nginx/conf.d/default.conf
创建镜像
docker build -f ./dkfile_nginxv1.yaml -t "nginxv1:1.1" .
#-f指定dockerfile文件 -t定义镜像名
注意:当前上下文:.
compose.yaml内容
version: '3.8'
services:
nginx_v1_2:
image: nginxv1:1.2
ports:
- 10022:80
networks:
- front-tier
- back-tier
volumes:
- /nginx_file/html:/nginx_file/html
- /nginx_file/conf:/nginx_file/conf
- /nginx_file/nginx_n2/accesslog:/nginx_file/accesslog
- /nginx_file/nginx_n2/errlog:/nginx_file/errlog
nginx_v1_3:
image: nginxv1:1.2
ports:
- 10023:80
networks:
- front-tier
- back-tier
volumes:
- /nginx_file/html:/nginx_file/html
- /nginx_file/conf:/nginx_file/conf
- /nginx_file/nginx_n3/accesslog:/nginx_file/accesslog
- /nginx_file/nginx_n3/errlog:/nginx_file/errlog
nginx_v1_4:
image: nginxv1:1.2
ports:
- 10024:80
networks:
- front-tier
- back-tier
volumes:
- /nginx_file/html:/nginx_file/html
- /nginx_file/conf:/nginx_file/conf
- /nginx_file/nginx_n4/accesslog:/nginx_file/accesslog
- /nginx_file/nginx_n4/errlog:/nginx_file/errlog
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge