在linux中迁移Docker默认镜像存储路径解决磁盘空间满的问题

通过yum或者apt安装的docker通常数据存储在 /var/lib/docker/ ,包括镜像、运行数据等。然而这个目录是在根目录下面,容易导致系统盘满了。如果出现这种情况就需要迁移docker的默认目录。

以下基于此说明。

本文使用到的docker版本为 Docker Version: 24.0.5,宿主机为 CentOS 7

不同版本的docker可能操作不一样,请根据实际情况操作。

核实docker版本方法:

shell 复制代码
# 1.查看 Docker 的系统信息:
sudo docker info

迁移docker默认路径

执行脚本

shell 复制代码
# 1. 停止 Docker 服务:
sudo systemctl stop docker
# 2.创建一个新的目录,用于存储 Docker 数据。例如,将数据存储在 /data/docker/data/:
sudo mkdir -p /data/docker/data/
# 3.将当前 /var/lib/docker 目录下的所有数据移动到新目录,修改权限是必须的。
sudo chmod -R 777 /data/docker/data/
# cp -a 可以复制文件的权限等相关属性,否则很容易因为权限无法启动
sudo cp -a /var/lib/docker/* /data/docker/data/
# 4.备份并修改 Docker 配置文件。默认情况下,Docker 使用 /etc/docker/daemon.json 配置文件。如果该文件不存在,请创建它。
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.backup
sudo vi /etc/docker/daemon.json
# 5.在 daemon.json 文件中,添加或修改 "data-root" 选项,以指向新的存储路径。例如:

{
  "data-root": "/data/docker/data/"
}

# 保存并关闭文件。

# 6.重新启动 Docker 服务:
sudo systemctl start docker
# 现在,Docker 应使用新的存储路径 /data/docker。请确保在启动容器和执行其他 Docker 操作时验证此更改。

如何验证是否迁移成功

要验证 Docker 是否使用了新的存储路径,您可以执行以下命令:

shell 复制代码
# 1.查看 Docker 的系统信息:
# 在输出的信息中,找到"Docker Root Dir"一项。它应该显示新的存储路径,例如 /data/docker/data/。

sudo docker info

# 2.运行一个简单的测试容器:
# 这将运行一个名为 hello-world 的简单 Docker 容器,然后将其删除。运行此命令的目的是确保 Docker 服务正常工作,以及新的存储路径可以用于创建和删除容器。

sudo docker run --rm hello-world

# 3.在新的存储路径中检查文件和文件夹:
# 此命令会列出/data/docker/data/ 目录中的所有文件和文件夹。如果一切正常,您应该看到 Docker 创建的各种文件夹,例如 overlay2、containers、volumes 等。

sudo ls -la /data/docker/data/

关于作者

来自一线全栈程序员nine的探索与实践,持续迭代中。

欢迎关注"雨林寻北"或添加个人卫星codetrend(备注技术)。

相关推荐
别再下雨辽3 分钟前
开发板通过 VSCode Remote-SSH 反向转发复用 PC 代理排障总结
linux·ide·笔记·vscode·ssh
Kratzdisteln14 分钟前
【Linux】Docker容器中快速部署VNC远程桌面环境
linux·运维·docker
魔众19 分钟前
轻量级云文件系统simple-file-server,电脑秒变存储服务器
运维·服务器
咸鱼xxx23 分钟前
N8N搭建Agent(Docker Desktop版本)
docker·ai·容器·agent·n8n
追光的孩子23 分钟前
window服务器添加samwaf防火墙遇到的问题和解决方案
运维·服务器
轻蓝雨28 分钟前
树莓派4B安装ubuntu server后再访问GPIO
linux·运维·ubuntu
宇宙帅猴35 分钟前
Ubuntu网络问题解决方案
linux·网络·ubuntu
栈低来信44 分钟前
klist链表
linux·数据结构·链表
一个平凡而乐于分享的小比特1 小时前
Linux动态库与静态库技术详解
linux·动态库·静态库
XiaoHu02071 小时前
Linux网络编程(第三弹)
linux·运维·网络