朱晓峰

一只生之无趣死之乏味的丧家之犬

0%

docker占用磁盘过高 迁移安装目录

前两天,logstash服务的日志一直在报错:

[FORBIDDEN/12/index read-only / allow delete (api)]

登上es所在的服务器看一眼,发现磁盘满了,挂载在/根目录的磁盘只有50G,虽然并不是es的存储导致的(因为已经设置了好了volums),但是docker容器没有空间也会导致服务不正常,所以打算把docker服务的目录都迁移至另一个分区。

准备工作

查看当前docker的Root Dir

1
2
# docker info | grep "Docker Root Dir"
Docker Root Dir: /var/lib/docker

这个目录是docker默认的安装目录,不论是构建镜像还是创建容器都是存储在该目录下的,如果磁盘满了,甚至会导致docker容器不能重启。

假设我们/home分区有足够的空间,我们会将/var/lib/docker迁移至/home/var/lib/docker,创建一下这个目录

mkdir -p /home/var/lib/docker/

开始迁移

停止docker服务

systemctl stop docker

利用rsync同步目录文件

rsync -avz /var/lib/docker/ /home/var/lib/docker

经过漫长的等待后,目录终于同步完成了

接下来编辑docker配置文件,没有则创建

例如:

vim /etc/docker/daemon.json

1
2
3
4
{
"data-root": "/home/var/lib/docker",
"registry-mirrors": ["mirror.docker.example.com"]
}

启动docker服务

systemctl start docker

再次执行docker info

1
2
# docker info | grep "Docker Root Dir"
Docker Root Dir: /home/var/lib/docker

再启动各个容器,查看服务是否正常。

这样就迁移好了。