一、概述
Docker 在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加。
Docker 的日志文件存在 /var/lib/docker/containers 目录中
二、处理方案
2.1 使用脚本清理日志(治标)
clean_docker_logs.sh
1
2
3
4
5
6
7
8
9
10
11
12
| #!/bin/bash
echo "==================== start clean docker containers logs =========================="
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "==================== end clean docker containers logs ==========================" |
2.2 设置Docker容器日志大小(治本)
修改docker-compose.yml
示例:
1
2
3
4
5
6
7
8
| gateway-services:
container_name: gateway-services
image: adoptopenjdk/openjdk8
restart: always
logging:
driver: "json-file"
options:
max-size: "50m" |
max-size=50m,意味着一个容器日志大小上限是50M
重启docker
docker-compose –compatibility up -d
自从有了docker,也可以在此容器中使用mysql也很方便。不过备份数据库也是个麻烦事。不像原来那样备份。
以下的脚本功能是自动备份并传到远程ftp服务器,保留7天时间的文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #!/bin/bash
data_dir="/root/dbbackup"
cd /root/dbbackup/
#localhost_mysql_1为docker所在的容器名,可以自行用docker ps进行查看自己mysql所在容器名
docker exec localhost_mysql_1 mysqldump -uroot -ppassword dbname > "$data_dir/dbname_`date +%Y%m%d`.sql"
tar zcvf $data_dir/dbname_`date +%Y%m%d`.tar.gz $data_dir/dbname_`date +%Y%m%d`.sql
#删除超过七天的备份文件
find $data_dir -mtime +7 -name 'dbname_[1-9].sql' -exec rm -rf {} \;
find $data_dir -mtime +7 -name 'dbname_[1-9].tar.gz' -exec rm -rf {} \;
#以下为自动登陆ftp并传文件
ftp -n -i 123.123.123.123 <<EOF
user ftpname ftppassword
binary
lcd /www/wwwroot/ftp
prompt
mput dbname_`date +%Y%m%d`.tar.gz
close
bye !
EOF |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
docker stats
//可以使用占位符,显示想要看的信息:
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.Name}}"
CONTAINER CPU % MEM USAGE / LIMIT NET I/O NAME
62be266217e3 0.00% 1.793MiB / 15.39GiB 2.34GB / 1.95GB vps12.com_nginx_1
21f986581173 0.00% 5.543MiB / 15.39GiB 16.9kB / 0B vps12.com_php54_1
f4a2f0111178 0.00% 6.48MiB / 15.39GiB 16.9kB / 0B vps12.com_php56_1
d984db8a9615 0.00% 19.55MiB / 15.39GiB 2.31GB / 2.66GB vps12.com_php72_1
dcd9e311a1f0 0.20% 443.4MiB / 15.39GiB 1.77GB / 2.68GB vps12.com_mysql_1
21c1f6fccf9c 0.15% 34.99MiB / 15.39GiB 7.49GB / 11.9GB vps12.com_redis_1 |
各个占位符的含义:
.Container – 显示容器ID;
.Name – 显示容器名称;
.ID – 显示容器ID;
.CPUPerc – 显示CPU百分比;
.MemUsage – 显示内存使用情况;
.NetIO – 显示网络I / O;
.BlockIO – 显示块I / O;
.MemPerc – 显示内存百分比;
.PID – 显示进程ID的数量;