Docker数据目录迁移解决方案
场景
在docker的使用中随着下载镜像越来越多,构建镜像、运行容器越来越多, 数据目录必然会逐渐增大;当所有docker镜像、容器对磁盘的使用达到上限时,就需要对数据目录进行迁移。
如何避免:
1.在安装前对/var/lib/docker(docker默认数据存储目录)目录进行扩容;
2.在docker安装完成后,修改docker默认存储位置为磁盘容量较大的位置;规避迁移数据过程中造成的风险。
前置工作
- 在迁移前确认迁移的目标目录空间是否充足
- 在迁移时需停止docker服务,务必在平台不使用时进行迁移
使用以下命令查询当前docker数据目录安装路径:
docker info | grep "Docker Root Dir"
下文以 /home/rain/docker 这个路径作为要迁移的新 Docker 安装(存储)目录
迁移方案
方法一:软链接
停掉Docker服务:
systemctl stop docker
根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):
rsync -avzP /var/lib/docker /home/rain/
参数解释:
-a,归档模式,表示递归传输并保持文件属性。
-v,显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
-P,显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
-z, 传输时进行压缩提高效率。
备份数据目录
mv /var/lib/docker /var/lib/docker.bak
添加软链接
ln -s /home/rain/docker /var/lib/
重新启动docker
systemctl start docker
启动 Docker 之后,Docker 写入的路径依然是 /var/lib/docker ,但是因为软链接的设置,实际已经是往新的目录写入了。至此,完成了 Docker 安装(存储)目录的迁移。
通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录备份数据:
rm -rf /var/lib/docker.bak
方法二:修改默认存储路径
直接移出数据,并修改docker默认存放路径位置
停掉Docker服务:
systemctl stop docker
根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):
rsync -avzP /var/lib/docker /home/rain/
修改配置默认路径
在EXECStart后面添加--graph=/home/rain/docker/
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --graph=/home/rain/docker
重启docker
systemctl daemon-reload
systemctl start docker
查看docker数据存储目录
[root@ ~]#: docker info | grep "Docker Root Dir"
Docker Root Dir: /home/rain/docker
确认之前的镜像是否还在
docker images
通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录数据:
rm -rf /var/lib/docker
方法三:通过mount挂载的bind命令
备份 fstab文件
cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d)
停掉Docker服务:
systemctl stop docker
根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):
rsync -avzP /var/lib/docker /home/rain/
将备份保存
mv /var/lib/docker/ /var/lib/docker.bak
通过mount挂载的bind命令将新位置挂载到老位置
# 创建挂载点
mkdir /var/lib/docker
mount --bind /home/rain/docker /var/lib/docker
mount -a
创建开机自动挂载
vim /etc/fstab
# 最后一行添加
/home/rain/docker /var/lib/docker none bind 0 0
# 挂载
mount -a
如有必要重启服务器确认是否成功迁移
reboot
通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录备份数据:
rm -rf /var/lib/docker.bak
Docker数据目录迁移解决方案的更多相关文章
- docker数据目录迁移
一.描述 docker默认的数据目录为/var/lib/docker,有的系统数据盘挂载在其他目录下,比如/home为数据盘,这时需要将docker数据目录更改,除了修改docker配置文件的方法,还 ...
- HDFS数据迁移解决方案之DistCp工具的巧妙使用
前言 在当今每日信息量巨大的社会中,源源不断的数据需要被安全的存储.等到数据的规模越来越大的时候,也许瓶颈就来了,没有存储空间了.这时候怎么办,你也许会说,加机器解决,显然这是一个很简单直接但是又显得 ...
- Hadoop数据目录迁移
Hadoop数据目录迁移 @(Hadoop) 随着数据的不断导入和增大,原本集群部署的目录磁盘空间不足了,所以要把hadoop存储数据的位置迁移到另外一个巨大的磁盘上,另外的一个用意是将数据和程序分离 ...
- Docker备份迁移
目录 Docker备份迁移 1.容器保存为镜像 2.镜像打包成压缩文件 3.把压缩文件恢复成镜像 Docker备份迁移 1.容器保存为镜像 将已经装好各种软件的容器再次打包为镜像,这样下次直接装这个镜 ...
- docker gitlab迁移 备份 部署 搭建以及各种问题
当前环境 服务器A 服务器B ubuntu docker gitlab(版本一致) docker安装gitlab 由于考虑到gitlab 包含了⾃身的nginx.数据库.端⼝占⽤等等因数,这⾥使⽤的是 ...
- Docker - 手动迁移镜像
在没有Docker Registry时,可以通过docker save和docker load命令完成镜像迁移的过程,先将镜像保存为压缩包,然后在其他位置再加载压缩包. 将镜像保存为压缩包文件 [ro ...
- docker镜像文件的导入与导出(docker镜像迁移)
1.查看镜像ID # docker images [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE myto ...
- docker的完整解决方案2
这个解决方案很简单 使用docker自带的swarm 首先初始化集群 docker swarm init 然后其余节点加入集群,这个就不说,太简单了 集群初始化后,可以查看下集群状态 docker n ...
- XTTS系列之一:U2L迁移解决方案之XTTS的使用
本系列的定位是对XTTS及相关技术进行深入的学习研究.作为本系列的开篇,本着实用性的原则,我先把一次实际生产环境U2L的迁移实战实施方案进行提炼简化,旨在能清楚说明该如何使用XTTS这种解决方案来进行 ...
随机推荐
- 被 Pandas read_csv 坑了
被 Pandas read_csv 坑了 -- 不怕前路坎坷,只怕从一开始就走错了方向 Pandas 是python的一个数据分析包,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的 ...
- 前端Firebug常见错误:SyntaxError:missing variable nam
出现上面那个问题应该是 某个地方,分号写错了 检查一下是否由于应该写分号的地方写成了其他符号.
- 在linux下搭建NFS服务器实现文件共享
目录 一.关于NFS 二.搭建一台NFS服务器共享特定资源 三.调优 一.关于NFS 1.NFS是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系 ...
- Java 面向对象概述
本文部分摘自 On Java 8 面向对象编程 在提及面向对象时,不得不提到另一个概念:抽象.编程的最终目的是为了解决某个问题,问题的复杂度直接取决于抽象的类型和质量.早期的汇编语言通过对底层机器作轻 ...
- EF Core扩展工具记录 批量操作 记录修改删除历史 动态linq
Microsoft.EntityFrameworkCore.UnitOfWork Microsoft.EntityFrameworkCore的插件,用于支持存储库,工作单元模式以及支持分布式事务 ...
- C# AutoMapper:流行的对象映射框架,可减少大量硬编码,很小巧灵活,性能表现也可接受。
AutoMapper 是一个对象-对象映射器,可以将一个对象映射到另一个对象. 官网地址:http://automapper.org/ 官方文档:https://docs.automapper.org ...
- 深度学习论文翻译解析(十六):Squeeze-and-Excitation Networks
论文标题:Squeeze-and-Excitation Networks 论文作者:Jie Hu Li Shen Gang Sun 论文地址:https://openaccess.thecvf.co ...
- qt界面设计
需求 需要不同界面同样的位置有上下的公共部分 分解 在WPF中我亦接触到需要这样做的程序.在wpf中我将上下公共部分作为界面基类,其它界面都继承这个基类.我用qt准备定义一个stackedpanel, ...
- 使用@Param注解
1,使用@Param注解 当以下面的方式进行写SQL语句时: @Select("select column from table where userid = #{userid} " ...
- 【转载】Vue.nextTick 的原理和用途
对于 Vue.nextTick 方法,自己有些疑惑.在查询了各种资料后,总结了一下其原理和用途,如有错误,请不吝赐教. 概览 官方文档说明: 用法: 在下次 DOM 更新循环结束之后执行延迟回调.在修 ...