需求背景
Docker 容器存放目录磁盘空间已满,需要转移数据并修改 Docker 默认存储位置。
方法一:修改配置参数
- 停止 Docker 服务。
systemctl stop docker
- 创建新的 Docker 目录,执行 df -h 查找大磁盘。例如在 /home 目录下创建 /home/work/docker_root。
mkdir -p /home/work/docker_root
- 迁移 /var/lib/docker 目录下的文件到新目录。
cp -R /var/lib/docker/* /home/work/docker_root
注意:如果文件内容较多,建议逐个文件拷贝以确保成功。若遇到'设备上没有空间'错误,可使用 mv 剪切。
- 修改 Docker 配置文件(如 /etc/systemd/system/docker.service.d/docker-options.conf),在文件中更改 --data-root 参数。
方法二:软链接
默认情况下 Docker 存放位置为 /var/lib/docker,可通过以下命令查看:
sudo docker info | grep "Docker Root Dir"
采用软连接方式修改镜像和容器的存放路径。
- 停掉 Docker 服务。
systemctl stop docker
- 移动整个 /var/lib/docker 目录到目的路径,并创建软链接。
mv /var/lib/docker /home/work/docker_root
ln -s /home/work/docker_root /var/lib/docker
此时启动 Docker,存储目录显示仍为 /var/lib/docker,但实际存储在数据盘。
方法三:Systemd Drop-In 配置
在 /etc/systemd/system/docker.service.d 目录下创建 Drop-In 文件 docker.conf。该文件夹默认不存在,需先创建。
Drop-In 文件用于覆盖默认服务参数。打开 docker.conf 增加如下内容:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph="/mnt/new_volume" --storage-driver=devicemapper
保存退出。/mnt/new_volume 为新存储位置,devicemapper 为当前存储驱动。根据实际驱动调整参数。
重新加载服务守护程序并启动 Docker:
sudo systemctl daemon-reload
sudo systemctl start docker
运行 docker info 检查 Docker 根目录是否已更改。


