更多分类文章:
Python | Linux | 大数据 | 数据库 | Git | Nodejs | Golang | 电脑技巧 | 计算机技术
docker所在的文件系统空间不足,迁移docker的存储目录到另外较大的磁盘中。
首先,查看docker目录:docker info | grep -i "docker root dir"
df -h 发现空间已满,需要迁移docker。
docker迁移
docker所有自身的东西都会存在这些文件夹下面包括镜像文件和容器,所以会占用越来越多的磁盘空间。如果docker所在的磁盘空间比较小,磁盘空间被占满没有空间的时候,显然会导致docker容器运行失败,此时必然要迁移docker的存储目录到一个更大的磁盘下面。
1.查看磁盘占用情况:df -h
2.查看docker自身的内存占用:docker system df
3.docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。
4.docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了…所以使用之前一定要想清楚.。我没用过,因为会清理 没有开启的 Docker 镜像。
迁移/var/lib/docker目录。
1.停止docker服务
systemctl stop docker
2.创建新的docker目录,执行命令df -h,找一个大的磁盘。 我在 /home目录下面建了 /home/docker/lib目录,执行的命令是:
mkdir -p /home/docker/lib
3.迁移/var/lib/docker目录下面的文件到 /home/docker/lib:
(rsync是linux文件夹同步的命令,参数要加一个-r,因为文件夹要递归copy,如果在同一台服务器上面,直接cp也是可以的)
rsync -r -avz /var/lib/docker /home/docker/lib/
4.配置 /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
5.然后在 devicemapper.conf 写入:(同步的时候把父文件夹一并同步过来,实际上的目录应在 /home/docker/lib/docker )
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/home/docker/lib/docker
6.重新加载 docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
7.为了确认一切顺利,运行
docker info
命令检查Docker 的根目录.它将被更改为 /home/docker/lib/docker
...
Docker Root Dir: /home/docker/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
...
8.启动成功后,再确认之前的镜像还在:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
AAA/AAA v2 7331b8651bcc 27 hours ago 3.85GB
BBB/BBB v1 da4a80dd8424 28 hours ago 3.47GB
9.确定容器没问题后删除/var/lib/docker/目录中的文件。
原文链接:docker所在文件系统空间不足进行迁移