解决Docker占用的磁盘空间问题

1,180 阅读2分钟

在我们安装好的docker默认是把docker安装在:/var/lib/docker 系统盘中。

/var/lib/docke占用100%问题

查看/var/lib/docker/磁盘占用多大

du -hs /var/lib/docker/

查看Docker的磁盘使用情况

docker system df

查看linux系统磁盘情况

df -h

上图,你会发现:在/var/lib/docker上占用了100%的磁盘,而/data下的磁盘还有很多,我们是不是可以把/var/lib/docker下迁移到/data目录下呢。

查看docker根目录

docker info

可以看出docker的根目录是:/var/lib/docker

解决上述问题

从上述问题中我们可以发现出:docker的根目录是在/var/lib/docker,那我们可以创建新的docker目录,执行命令df -h,找一个大的磁盘,然后把/var/lib/docker目录迁移到大点的磁盘上不就解决了么。

首先停止docker服务

systemctl stop docker

选择磁盘

使用 df -h查询哪个磁盘空间大:

在上述图中可以看出:/data下的空间比较大,那么我们可以把docker根目录迁移到/data下。

创建存储docker根目录的文件夹

mkdir -p /data/docker/lib

迁移/var/lib/docker目录下面的文件到 /data/docker/lib

rsync -avz /var/lib/docker /data/docker/lib/

配置文件

配置 /etc/systemd/system/docker.service.d/devicemapper.conf。查看 devicemapper.conf 是否存在。如果不存在,就自己创建:

mkdir -p /etc/systemd/system/docker.service.d/

vi /etc/systemd/system/docker.service.d/devicemapper.conf

devicemapper.conf写入内容如下:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/data/docker/lib/docker

重新加载docker

systemctl daemon-reload

systemctl restart docker

systemctl enable docker

确认是否加载成功

docker info

产生的问题

迁移/var/lib/docker目录后,Docker无法启动 (error initializing graphdriver: driver not supported)

systemctl start docker

错误原因:error initializing graphdriver: driver not supported

解决办法:在 /etc/docker 目录下创建daemon.json文件,并且加入以下配置

创建文件: touch daemon.json

编辑文件: vi daemon.json

文件内容:

{
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}

再次执行

systemctl start docker

docker-runc not installed on system 问题

docker运行镜像的时候,报错如下:

WARNING: IPv4 forwarding is disabled. Networking will not work.
/usr/bin/docker-current: Error response from daemon: shim error: docker-runc not installed on system.

解决问题

cd /usr/libexec/docker/

ln -s docker-runc-current docker-runc