在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(备注技术)。

相关推荐
wdfk_prog10 小时前
嵌入式面试真题第 10 题:高优化等级下共享状态可见性、内存模型与系统级同步设计
java·linux·开发语言·面试·职场和发展·架构·c
x-cmd12 小时前
Mac 涨价后,本地 AI 还能千元入门吗?
linux·人工智能·macos·ai·agent·amd·本地ai入门
AOwhisky14 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm
摇滚侠18 小时前
Linux 零基础教程 09、11、77
linux·运维·服务器
Lottie202618 小时前
电商自动化提质增效:API接口落地的核心价值与实战用法
运维·自动化
Hardworking66620 小时前
第6章 数据工程
运维·服务器·数据库·数据工程
念何架构之路20 小时前
Docker 容器状态机 学习
java·学习·docker
jieyucx20 小时前
Docker 入门第六阶段:综合实战项目
运维·docker·容器
美丽的欣情20 小时前
RK3588 Debian 交叉编译环境搭建(Windows + VMware Debian + CMake)
运维·windows·debian
嵌入式学习和实践21 小时前
嵌入式 Linux 调闭源 SDK 怕崩?用 dlopen 把第三方动态库库“隔离“起来
linux·三方库