一.问题现象 磁盘空间不足
[root@dockerfile harbor]# docker-compose up -d
[2216] INTERNAL ERROR: cannot create temporary directory!
[root@dockerfile harbor]# docker-compose up stop
Failed to write all bytes for cryptography/hazmat/bindings/_openssl.abi3.so
fwrite: No space left on device
二.查找大文件
#根目录下找到是docker文件
cd /
du -sh *
du -sh /var/lib/docker/
#比较大的文件夹
21G overlay2 #多层存储 每个容器对应一个文件夹,主要存储 容器镜像 容器数据
25G volumes #持久化存储 每个容器与宿主机之间共享的数据
或 containers #运行容器的数据 容器的元数据 文件系统
#删除没用的镜像文件 或容器中的日志文件
docker rmi -f 镜像
#查看空间大小
df -h
三.磁盘扩容
扩容/dev/mapper/centos-root
#vmware新增加一块磁盘 查看
fdisk -l
lsblk
#都看不到,新增加的磁盘的?
#查看主机总线型号 一般host0 host1 host2
ls /sys/class/scsi_host/
#重新扫描scsi总线
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
#再次看盘 发现磁盘/dev/sdb
fdisk -l
#创建pv
pvcreate /dev/sdb
#扩展vg
vgextend centos /dev/sdb
#查看vg 空闲有50G空间
vgs
#查看lv 要扩展的是root
lvs
#扩展lv
lvextend -L +50G /dev/mapper/centos-root
#扩展xfs文件系统的大小
xfs_growfs /dev/mapper/centos-root
#查看空间大小 发现已扩容50G
df -h
四. 规避/var/lib/docker/overlay2 空间被占满
0.提前规划好磁盘空间,将docker应用部署在空间比较大的磁盘目录
1.监控磁盘空间,及时扩展磁盘空间
2.持久化存储使用外部存储
3.自动化清理脚本,清理日志及临时文件
4.配置docker的工作目录
#/path/to/your/docker-data替换为你希望Docker存放镜像、容器等数据的目录路径
#/path/to/your/docker-logs替换为你希望存放Docker日志的目录路径
#编辑/etc/docker/daemon.json
{
"data-root": "/path/to/your/docker-data",
"log-dir": "/path/to/your/docker-logs"
}
#重启docker
systemctl restart docker
5.清理不再使用的容器、镜像、卷或网络(谨慎操作)
#清理未使用的镜像和悬空镜像
docker image prune
#清理未使用的卷
docker volume prune
#清理未使用的网络
docker network prune