使用docker system df命令查看Docker整体磁盘使用情况(包括镜像、容器、卷、构建缓存的占用量及可回收空间);若需更详细的细分,可添加-v参数(如docker system df -v),定位具体是哪个镜像、容器或卷占用了大量空间。
docker container prune命令删除所有已停止的容器;若需谨慎操作,可先通过docker ps -a查看容器状态,再手动删除指定容器(如docker rm <容器ID>)。<none>)的旧版本镜像,由新镜像构建后产生。使用docker image prune命令清理所有悬空镜像;若需清理未被任何容器使用的镜像(包括未悬空的),可添加-a参数(docker image prune -a)。docker volume prune命令清理所有未被任何容器使用的卷;若需查看哪些卷是无用的,可先运行docker volume ls -f dangling=true。apt-get update的结果)会占用大量空间,尤其是频繁修改Dockerfile时。使用docker builder prune清理未使用的构建缓存;若需彻底清理所有缓存(包括可能还需要的),添加--all参数(docker builder prune --all)。docker system prune -a --volumes命令,一次性清理所有已停止的容器、悬空镜像、无用卷和构建缓存,快速释放空间。通过限制容器的CPU、内存、磁盘I/O等资源,避免单个容器占用过高资源导致系统崩溃。
--cpus参数限制容器可使用的CPU核心数(如docker run -it --cpus=1 ubuntu:latest /bin/bash,限制为1个核心);--cpu-shares参数设置CPU优先级(默认1024,值越高优先级越高,如docker run -it --cpu-shares=512 ubuntu:latest /bin/bash,降低优先级)。--memory参数限制容器最大内存使用量(如docker run -it --memory="512m" ubuntu:latest /bin/bash,限制为512MB);--memory-swap参数限制内存与交换空间的总和(如docker run -it --memory="512m" --memory-swap="1g" ubuntu:latest /bin/bash,内存512MB+交换空间512MB,总和1GB);--memory-reservation参数设置内存预留量(如docker run -it --memory="512m" --memory-reservation="256m" ubuntu:latest /bin/bash,系统紧张时优先保证256MB内存)。--blkio-weight参数设置磁盘I/O权重(范围10-1000,默认500,值越低优先级越低,如docker run -it --blkio-weight=300 ubuntu:latest /bin/bash);--device-read-bps/--device-write-bps参数限制特定设备的读写速度(如docker run -it --device-read-bps=/dev/sda:1mb ubuntu:latest /bin/bash,限制/dev/sda读取速度为1MB/s)。若需要全局限制Docker的资源使用(如所有容器的默认资源限制),可修改Docker的配置文件/etc/docker/daemon.json,添加以下内容:
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 65535,
"Soft": 65535
},
"nproc": {
"Name": "nproc",
"Hard": 65535,
"Soft": 65535
}
}
}
修改后重启Docker服务使配置生效:systemctl restart docker。该配置可限制容器内进程的最大文件描述符数(nofile)和最大进程数(nproc),防止容器过度消耗系统资源。
docker builder prune --all和docker volume prune,避免构建缓存和卷长期积累。/var/lib/docker(Docker默认数据目录)挂载到大容量磁盘分区(如/mnt/bigdisk),避免根分区被塞满。具体步骤:停止Docker服务(systemctl stop docker),复制/var/lib/docker到新分区(rsync -avz /var/lib/docker/ /mnt/bigdisk/docker/),修改/etc/fstab添加挂载项(如/mnt/bigdisk/docker /var/lib/docker none bind 0 0),重启Docker服务。RUN命令),避免不必要的缓存堆积(如apt-get update和apt-get install合并为一条命令),从而减少镜像占用的空间。