Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项

发布时间:2023年12月26日

描述

在把docker 的默认镜像从/var/lib/docker/移动到新的路径以释放根目录空间后,使用 docker images命令查询并没有发现之前的镜像文件列表。

原因

/etc/docker/daemon.json中没有按照规范方式使用路径命名名称。

解决方式

更新Docker的配置文件(通常是/etc/docker/daemon.json),设置新的数据存储路径:注意在这里使用 docker 的特定名称来指定最后一级文件夹名称当出现-等字符时会影响docker服务启动时加载本配置内指定的数据路径

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

确保配置文件中的路径是新的存储路径。

附注:完整迁移方案

更改Docker的默认镜像存储路径是一个比较复杂的操作,因为它涉及到Docker内部的数据管理。如果只是更改了存储路径而没有进行适当的迁移和清理,那么可能会出现一些问题,比如:

  1. 镜像和容器丢失:如果新的存储路径没有包含原来路径下的数据,那么在重启服务后,Docker将无法找到原来的镜像和容器,因为它们仍然引用旧的路径。

  2. 层次结构不一致:Docker镜像是由多个层次构成的,如果这些层次没有被正确迁移到新的路径,可能会导致镜像损坏。

  3. 权限问题:更改存储路径可能会导致权限问题,特别是如果新路径的权限设置不正确,Docker可能无法访问或创建必要的文件和目录。

为了解决这些问题,应该按照以下步骤操作:

  1. 停止Docker服务
    在进行任何迁移之前,确保Docker服务已经停止,以避免数据损坏或丢失。

    sudo systemctl stop docker
    
  2. 迁移数据
    将原来存储路径下的数据完整地迁移到新的路径。可以使用rsync命令来帮助完成这个操作:

    sudo rsync -avzh /var/lib/docker/ /mnt/mydisk/docker/
    

    这里假设/var/lib/docker/是旧的路径,/mnt/mydisk/docker/是新的路径。

  3. 更新Docker配置
    更新Docker的配置文件(通常是/etc/docker/daemon.json),设置新的数据存储路径:

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

    确保配置文件中的路径是新的存储路径。

  4. 修正权限
    确保新路径的权限设置正确,Docker用户(通常是docker)需要有权限读写新路径下的数据。

  5. 重启Docker服务
    一旦迁移和配置更新完成,重启Docker服务:

    sudo systemctl start docker
    
  6. 验证
    检查Docker是否能够正常运行,并且能够访问迁移后的镜像和容器:

    docker images
    docker ps -a
    

如果在迁移过程中出现问题,或者在重启Docker服务后仍然遇到错误,可能需要检查Docker的日志文件来获取更多的错误信息。通过以下命令可以查看Docker服务的日志:

sudo journalctl -u docker.service

分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za
删除线格式

文章来源:https://blog.csdn.net/qq_29111047/article/details/135215632
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。