0


ubuntu修改docker镜像存储位置,并迁移现有镜像(保姆级教程)

摘要

在进行docker部署的时候经常出现

no space left on device

的错误,这是由于镜像存储文件夹磁盘空间不足引起的,通常需要更换默认的镜像保存文件夹

/var/lib/docker

。在更换过程中,常常会遇到下面这个错误。

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

不少用户会因此而困扰。本篇文章将详细记录一下镜像迁移的步骤和可能遇到的问题。

具体步骤

1 输入
docker info

查看docker信息

在这里插入图片描述
这里需要注意两个地方,第一个是

Storage Driver: vfs

,这是有可能出现

镜像迁移之后,没有原先镜像和容器信息

问题的地方;第二个是

Docker Root Dir

,这里是默认的镜像文件存储位置。

2 关闭docker服务:
sudo systemctl stop docker.service
3 将
/var/lib/docker

里的所有文件拷贝到新的文件夹

/home/user/docker_work/docker

中。

sudo cp -r /var/lib/docker/* /home/user/docker_work/docker

如果出现权限不足的情况,可以利用

sudo chmod -R 777 /var/lib/docker

修改默认存储文件夹权限,再进行拷贝。

4 修改
/etc/docker/daemon.json

文件

这个文件docker是不会默认生成的,需要自己在文件夹中新建。文件中填入以下内容:

{
"data-root": "/home/user/docker_work/docker",  
}

对于旧的docker版本,需要将

data-root

更换成

graph

;如果是要修改阿里镜像源加速的话也是在这个文件中修改。

5 更新docker配置
sudo docker daemon-reload

重启docker

sudo systemctl restart docker

在这里,如果报错

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

说明是

/etc/docker/daemon.json

文件的问题,要仔细检查格式、逗号字符等。

6 检查结果

没有问题之后输入

sudo docker info

能够观察到

Docker Data Dir

已经修改成了

/home/user/docker_work/docker

;
注意观察显示结果中的

Storage Driver

,如果和之前的

Storage Driver

是一致的话,输入

sudo docker images

查看docker镜像,能显示以前的镜像结果,说明镜像迁移成功。但是如果

Storage Driver

的值和之前不一致则不会显示之前镜像的结果,如下所示:
在这里插入图片描述

7 修改Storage Driver
7.1尝试解决

这里我首先参考这个博主的解决方式:修改Docker默认镜像和容器存储位置(超详细!!!)
修改docker配置文件

/etc/systemd/system/multi-user.target.wants/docker.service
该博主的解决方式:
将ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock修改以下内容:
ExecStart=/usr/bin/dockerd --graph=/mnt/docker --storage-driver=overlay

这里还是一样,新版本docker用

data-root

,旧版本用

graph

替换;除此之外,还需要将

overlay

需要修改成与上面

Storage Driver

一致。
保存后运行:

sudo systemctl daemon-reload
sudo systemctl restart docker

如果能够重新运行的话应该没有什么问题,但我这里还是出现了这个报错。

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

而且经过检查deamon.json中也不存在格式、符号等方面的问题。

7.2 解决方法

将docker配置文件

/etc/systemd/system/multi-user.target.wants/docker.service

恢复原样,不做修改。
修改

/etc/docker/daemon.json

文件为:

{
"data-root": "/home/user/docker_work/docker",  
"storage-driver": "vfs"
}

修改完成后输入:

sudo systemctl daemon-reload
sudo systemctl restart docker

此时

sudo docker info

查看docker信息:
在这里插入图片描述
此时的

Storage Driver

与之前一致,

Docker Root Dir

修改新的存储文件夹,说明修改docker镜像存储位置成功
输入

sudo docker images

查看镜像:
在这里插入图片描述
出现以前的镜像信息,说明迁移镜像文件成功。

8 删除默认镜像

确定镜像没有问题后,可以删除默认存储文件夹中的文件

sudo rm -rf /var/lib/docker/*

总结

本篇文章详细介绍了ubuntu20.04系统上修改docker镜像存储位置,并迁移现有镜像到新的存储文件夹的过程。另外,针对操作过程中遇到的报错信息进行了报错解决。

标签: ubuntu docker

本文转载自: https://blog.csdn.net/givxd/article/details/141196682
版权归原作者 没有先生 所有, 如有侵权,请联系我们删除。

“ubuntu修改docker镜像存储位置,并迁移现有镜像(保姆级教程)”的评论:

还没有评论