备份通过docker run命令运行起来的容器:
主要通过项目:
red5d/docker-autocompose
来实现的
一行脚本:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock red5d/docker-autocompose $(docker ps -q) > docker-compose.yml
这里的$(docker ps -q) 可以换成单个的容器名,这里我直接备份所有在运行中的容器
其他:calculate_docker_volume_size.sh
查看docker运行卷大小的脚本:
要用管理员权限运行
#!/bin/bash
# 初始化总大小
total_size=0
# 获取所有 Docker 卷
for volume in $(docker volume ls -q); do
# 获取卷的路径
volume_path="/var/lib/docker/volumes/$volume/_data"
# 检查路径是否存在
if [ -d "$volume_path" ]; then
# 获取卷的大小,输出字节数
size=$(du -sb "$volume_path" 2>/dev/null | cut -f1)
# 如果 du 命令失败或没有获取到大小,跳过
if [ $? -ne 0 ] || [ -z "$size" ]; then
echo "Warning: Could not get size for volume $volume ($volume_path)"
continue
fi
# 累加总大小
total_size=$((total_size + size))
else
echo "Warning: $volume_path does not exist or is not a directory"
fi
done
# 如果总大小大于零,转换为人类可读格式
if [ $total_size -gt 0 ]; then
echo "Total volume data size: $(numfmt --to=iec $total_size)"
else
echo "No valid volumes found or no data to calculate."
fi