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

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

描述

在把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可能无法访问或创建必要的文件和目录。

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

停止Docker服务

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

sudo systemctl stop docker

迁移数据

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

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

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

更新Docker配置

更新Docker的配置文件(通常是/etc/docker/daemon.json

,设置新的数据存储路径:

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


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


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

重启Docker服务

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

验证

检查Docker是否能够正常运行,并且能够访问迁移后的镜像和容器:

docker images
docker ps -a

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

sudo journalctl -u docker.service

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

删除线格式


目录
相关文章
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像-手动制作yum版nginx镜像
这篇文章介绍了如何手动制作一个基于CentOS 7.6的Docker镜像,其中包括下载指定版本的CentOS镜像,创建容器,配置阿里云软件源,安装并配置nginx,自定义nginx日志格式和web页面,最后提交镜像并基于该镜像启动新容器的详细步骤。
104 21
Docker镜像-手动制作yum版nginx镜像
|
7天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
1月前
|
应用服务中间件 nginx Docker
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
147 17
Docker镜像-基于DockerFile制作编译版nginx镜像
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像管理篇
关于Docker镜像管理的教程,涵盖了Docker镜像的基本概念、管理命令以及如何制作Docker镜像等内容。
117 7
Docker镜像管理篇
|
7天前
|
Linux Docker 容器
linux之docker命令
linux之docker命令
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
10天前
|
存储 Docker 容器
Docker工作目录迁移
Docker工作目录迁移
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
75 20
|
1月前
|
Docker 容器
Docker Hub镜像公共仓库使用
这篇文章介绍了如何使用Docker Hub公共仓库进行镜像的创建、上传、下载和管理。
439 8
|
2月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
83 5
下一篇
无影云桌面