Published on

修改Docker默认的数据目录(Docker迁移卷)

Authors
  • avatar
    Name
    Pumpkinor

最近在线上使用的 docker 主机发现根目录容量快满了,一番查找,发现是 dockerdata 文件过大了。

默认情况下,docker 镜像的默认存储路径是/var/lib/docker,这相当于直接挂载根目录下,然而如果在安装系统时选择了自动分区,根分区一般不会分太大,CentOS 会默认分 50G

CentOS 在安装时如果选择默认分区,会把最大存储空间分给 home,此处也可另外挂载一块磁盘,把新的 docker 目录建在新磁盘上面。

后面的修改皆以将docker数据迁移到 mkdir /home/docker 目录为例

创建新的 docker 目录 mkdir /home/docker

如果已经有镜像已经加载,已经有容器正在运行,请先停了 docker 服务,并把数据迁移到新目录中

修改 docker 的默认路径,有三种方法

1、修改 docker.service

vim /usr/lib/systemd/system/docker.service

#在里面的EXECStart的后面增加 --graph /home/docker:

ExecStart=/usr/bin/dockerd  -H fd:// --containerd=/run/containerd/containerd.sock  --graph /home/docker

#保存退出后执行以下命令
systemctl enable docker
systemctl daemon-reload
systemctl restart docker

2、编辑配置文件/etc/docker/daemon.json

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://registry.docker-cn.com"],
#   添加 "data-root": "/home/docker",
  "data-root": "/home/docker",
  "log-driver":"json-file",
  "log-opts": {"max-size":"100m"}
}

#保存退出后
#重启docker应用
systemctl restart docker

3、使用软链接

使用软链接需要先把/var/lib 下的 docker 目录删除,删除之前记得迁移数据

然后用下面命令创建软链接

ln -s /home/docker /var/lib

#重启docker
systemctl restart docker