这个脚本是不值得单写一篇文章的,但是我怕哪一天脑子一抽就忘了,还是记录一下吧
反正周末在家闲着没事,也算是终于有时间写写文档和书评了
Docker多实例一键换包
先来看一下五个docker实例的目录结构,下方仅展示其中一个实例,其他实例仅存在数字差别
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[root@localhost audiolistening_arm]# tree -L 1 ./audio_1/
./audio_1/
├── conf
├── docker-audio1.yml
├── logs
└── user_manage_web
./audio_2/
├── conf
├── docker-audio2.yml
└── logs
...
./audio_5/
├── conf
├── docker-audio5.yml
└── logs接着我们来看下audio_1的yaml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20version: "3"
services:
audiolistening-container_43_1:
image: "audiolistening_arm:v3_zy_292"
container_name: "audiolistening_43_1"
deploy:
resources:
limits:
cpus: "3.00"
memory: 4G
reservations:
memory: 2G
cpus: "1.00"
restart: always
volumes:
- ./conf:/usr/local/audiolistening/AudioListening/etc/conf
- ./logs:/usr/local/audiolistening/logs
ports:
- "18941:9000"
- "19941:9800"因为仅是多个实例统一换包,所以我们仅需要更改每个实例yaml文件的第四行,最后的版本号就行了
下面是通过sed命令做的替换,就不多赘述了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18!/bin/bash
basePath=/data/voice_bot_4.2/audiolistening_arm
read -p "请输入小程序版本号: " duration
for i in {1..5};do
lastDuration=`sed -n "4p" ./audio_${i}/docker-audio${i}.yml | awk -F '_' '{print $4}' | awk -F '"' '{print $1}'`
sed -i "4s/$lastDuration/$duration/g" ./audio_${i}/docker-audio${i}.yml
done
for i in {1..5}; do docker-compose -f "`pwd`/audio_${i}/docker-audio${i}.yml" down ;done
sleep 10s
for i in {1..5}; do docker-compose -f "`pwd`/audio_${i}/docker-audio${i}.yml" up -d ;done结果
Docker监控容器并输出到文件
这个脚本是用于监控大批量文件下载的内存开销的,所以打印了时间。当时因为用例少所以就没有使用python做统计。之前的文章有docker的监控与统计,所以这里就不说了
当然这个脚本有时间还是要写个python文件统计一下的
1 | !/bin/bash |
tee
命令允许用户在管道中间拆分数据流,一部分输出到屏幕(标准输出),另一部分输出到文件。这样可以在不影响数据流的同时,将数据保存到文件中。
tee
命令被用来将输出同时打印到终端屏幕和一个文件中。通过使用 --append
参数,它会将输出追加到文件的末尾,而不是覆盖文件内容。
docker stats --no-stream
命令会获取容器的统计信息,但不会持续输出实时数据流,而是获取一次性的统计信息,然后将其写入文件。