Docker 数据目录迁移

我的日常 ㄒoㄒ

背景

docker 的默认数据存储目录是 /var/lib/docker,随着 docker 的使用,镜像、容器越来越多,日志文件越来越大
你的盘慢慢的就被撑爆了 💥

让我们查看下容器日志文件,ES 的容器日志居然有 4G,OMG

迁移

先把 docker 服务停掉

systemctl stop docker

将原数据迁移至新目录下

rsync -avzP /var/lib/docker  [your/data/path]

后面有两种方法自行选择

方法一:软连接

不修改配置,将新地址通过软连接的形式映射到原地址

# 备份原数据
mv /var/lib/docker  /var/lib/docker.bak

# 添加软连接
ln -s [your/data/path]/docker /var/lib/

# 重启docker
systemctl start docker

# 确认之前的镜像是否存在
docker images

# 确认docker 能正常运行后,删除备份数据目录
rm -rf /var/lib/docker.bak

方法二:修改默认存储路径

# 修改存储地址,如果文件不存在则需要手动创建
vim /etc/docker/daemon.json

新增以下信息

{
  "data-root": "[your/data/path]/docker"
}
警告

这里要特别注意 json 的格式

# 重启docker
systemctl daemon-reload
systemctl start docker

# 查看 docker 目录是否已被修改
docker info | grep "Docker Root Dir"

# 确认之前的镜像是否存在
docker images

# 确认docker 能正常运行后,删除原数据目录
rm -rf /var/lib/docker

赠品

附赠两个常用命令

# 删除所有未被标记tag的镜像,即名为 none的镜像
docker image prune

# 查看容器日志大小
find /var/lib/docker/containers/ -name *-json.log | xargs du -sh
目录