在使用podman运行容器时,随着容器和镜像数量的增加,默认存储目录可能会面临空间不足的问题。本文基于podman 4.9.4版本,通过两种方法来设置podman数据存储目录。
podman的默认配置文件在/etc/containers/storage.conf,其中runroot和graphroot是两个关键目录配置项,分别用于管理容器和镜像的存储位置。
runroot(临时运行时数据)
默认路径/run/containers/storage,该目录用于存储容器运行时的临时数据。如:容器运行的状态文件、短期存储的元数据、正在运行的容器的临时文件系统等。
特点:该目录中的数据通常是临时性的,容器停止后部分内容会被清理。
graphroot(持久化存储数据)
默认路径/var/lib/containers/storage,该目录用于存储持久化的容器和镜像数据。如:镜像层、容器的持久化文件系统、卷、存储驱动管理的内容等。
特点:该目录中的数据是持久化的,即使重启服务器,数据也会保留,占用磁盘空间较大(依赖镜像和容器数量)。
配置项 | 数据性质 | 典型路径 | 是否持久化 | 主要用途 |
---|---|---|---|---|
runroot | 临时运行时数据 | /run/containers/storage | 否 | 容器运行时的临时状态和文件 |
graphroot | 持久化存储数据 | /var/lib/containers/storage | 是 | 镜像、容器文件系统、卷等 |
数据存储路径修改
方法一:
直接修改配置文件
1 |
vi /etc/containers/storage.conf |
修改对应字段,修改保存“即时生效”
1 2 |
runroot = "/run/containers/storage" graphroot = "/var/lib/containers/storage" |
如果希望保留原有的镜像和容器,需手动迁移数据,例如
1 2 |
rsync -av /var/lib/containers/storage/ /data/containers/storage/ rsync -av /run/containers/storage/ /data/containers/run/ |
验证
1 |
podman info --debug | grep -E "runRoot:|graphRoot:" |
此时所看到的graphRoot、runRoot路径就应该是修改后的了。
方法二:
不修改配置文件,软链方式
1 2 3 4 |
mv /var/lib/containers /data/ ln -s /data/containers /var/lib/containers mv /run/containers /data/ ln -s /data/containers /run/containers |
总结:通常情况下,应优先考虑修改graphroot存储路径,不建议修改runroot的路径,因为/run是内存文件系统(tmpfs),读写速度快,无需持久化。
原文链接:podman更改数据存储目录,转载请注明来源!