Docker数据目录迁移

news2024/12/28 23:31:56

背景

在CentOS中安装了Docker,默认Docker Root目录是/var/lib/docker。但是该目录磁盘空间很有限,后期很容易导致系统盘满了,所以考虑迁移到更大磁盘目录下,比如下面的/fsc目录下。

解决

在Docker官方文档https://docs.docker.com/config/daemon/#daemon-data-directory中写了关于数据目录的信息:

  • Docker deamon会把所有数据持久化到一个目录里面,包括容器、镜像、volume、服务定义和秘钥

  • Linux默认目录是/var/lib/docker,Windows默认目录是C:\ProgramData\docker

  • 修改数据目录可以使用data-root选项

基于如下的官方描述,进行数据目录的修改:

第1步:停止docker服务

systemctl stop docker

第2步:迁移源目录到新目录

源目录:/var/lib/docker

新目录:/fsc/docker

mv /var/lib/docker /fsc/

移动后的效果:

第3步:修改docker配置文件

Linux下找到/etc/docker/daemon.json进行编辑(如果没有就创建):添加data-root即可,其它原有配置不动

{
  "data-root": "/fsc/docker"
}

Windows下是C:\ProgramData\docker\config\daemon.json,修改方式同上。

注意:如果之前容器有使用-v参数,请务必修改下容器的config.v2.json文件,替换掉原有/var/lib/docker路径。否则,容器会启动失败哦。可以看下文章后面《遇到的问题》这一节。

第4步:启动docker服务

systemctl start docker

第5步:验证是否修改成功

查看 Docker Root Dir

直接执行docker info命令,即可看到Docker Root Dir: /fsc/docker

docker info
[root@localhost xxx]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.9.1-docker)
  scan: Docker Scan (Docker Inc., v0.23.0)

Server:
 Containers: 3
  Running: 0
  Paused: 0
  Stopped: 3
 Images: 2
 Server Version: 20.10.22
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 5b842e528e99d4d4c1686467debf2bd4b88ecd86
 runc version: v1.1.4-0-g5fd4c4d
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-1160.81.1.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 16
 Total Memory: 62.76GiB
 Name: localhost.localdomain
 ID: MGFS:BHRO:PFDT:YEVK:V5E7:N4EQ:BWRZ:HOM3:2IZC:4CIF:LM2N:DOLR
 Docker Root Dir: /fsc/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

查看docker启动日志

启动成功,状态正常,没有错误日志:

遇到的问题

容器启动报错:evaluating symlinks from mount source

报错信息

执行systemctl staus docker -l,结果如下:

可以看到有个container启动失败,报错信息为:

Jan 13 13:16:45 localhost.localdomain dockerd[10481]: time="2023-01-13T13:16:45.049206934+08:00" level=error msg="2949817e1ace517b84a9b4f65b26e32309c9b27924b81f51cd48c97b4daecaf0 cleanup: failed to delete container from containerd: no such container"
Jan 13 13:16:45 localhost.localdomain dockerd[10481]: time="2023-01-13T13:16:45.049272981+08:00" level=error msg="failed to start container" container=2949817e1ace517b84a9b4f65b26e32309c9b27924b81f51cd48c97b4daecaf0 error=" error evaluating symlinks from mount source \"/var/lib/docker/volumes/portainer_data/_data\": lstat /var/lib/docker: no such file or directory"

这个容器是portainer,当时运行容器时加了-v参数(-v portainer_data:/data)。

解决

在新目录下找到这个容器目录:/fsc/docker/containers/2949817e1ace517b84a9b4f65b26e32309c9b27924b81f51cd48c97b4daecaf0

  • /fsc/docker是新的存储目录

  • containers表示容器目录

  • 2949817e1ace517b84a9b4f65b26e32309c9b27924b81f51cd48c97b4daecaf0是具体容器

在这个目录下有个config.v2.json:

搜索config.v2.json发现有两处:

1、挂载的volume

2、日志路径

可以通过如下命令进行修改(记得先备份下):

# 扫描新目录下的所有容器,将/var/lib/docker换成/fsc/docker
sed 's%/var/lib/docker%/fsc/docker%g' /fsc/docker/containers/*/config.v2.json

修改后,重启systemctl restart docker,然后查看日志:运行正常。

参考

1.[Docker存储目录迁移](https://www.cnblogs.com/seaskyccl/articles/16424212.html)

2.[Docker安装目录迁移](https://blog.csdn.net/m0_67403272/article/details/126643533)

3.[官方:Docker deamon.json配置文件](https://docs.docker.com/config/daemon/)

4.[Error starting container after moving docker root directory](https://forums.docker.com/t/error-starting-container-after-moving-docker-root-directory/64324)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

excel查找定位:INDEX函数——精确制导导弹

一、认识INDEX函数Index函数:在给定的单元格区域中,返回特定行列交叉处单元格的值或引用。函数结构:index(单元格区域,行号,列号)区域,行号,列号,很像通过坐标瞄准打靶呀。就像下面动…

高阶数据结构之AVL树

文章目录回顾二叉搜索树AVL树在AVL树中插入新节点AVL树中的各种旋转右单旋左单旋左右双旋右左双旋验证是否是AVL树验证是否是二叉搜索树验证是否是平衡树总结AVL树回顾二叉搜索树 二叉搜索树的一些特点回顾: (1)每一个节点左树上所有节点的值都是…

vue多实例的骚操作,主要用于解决组件全局弹窗面板的问题。。。

1.问题背景 主要是自己写了一个组件库&#xff0c;其中涉及到弹出面板的组件遇到兼容性问题。 举个例子&#xff0c; 日期选择组件例如 DaterPicker组件 大概的代码如下&#xff08;省略了细节实现&#xff09; <template> <label>日期</label> <input …

一文详解PHP用流方式实现下载文件(附代码示例)

一淘模板给大家带来了关于PHP的相关知识&#xff0c;其中主要介绍了在PHP中怎么使用流方式来实现下载文件的&#xff0c;下面一起来看一下&#xff0c;希望对大家有帮助。 PHP 中使用流方式下载文件 在 PHP 中&#xff0c;可以使用 fopen() 函数打开一个远程文件&#xff0c;并…

Unity使用本地UPM包的实现方式

实现1&#xff1a;项目根路径实现优点&#xff1a;1.不必有额外操作2.本地包随项目版控&#xff0c;不会丢失包产生错误3.按需升级包缺点&#xff1a;1.包的修改随项目版控&#xff0c;增加日志冗余2.不利于包全局管理建议使用场景多人合作&#xff0c;开发底子较弱的团队。实现…

今年春节,全国物流很稳!

我叫张雄伟&#xff0c;是腾讯安全的一位交付工程师。我和团队的主要工作&#xff0c;是物流行业重点客户的安全防御项目管理工作。近两年&#xff0c;我们开始向顺丰、极兔等多家大型物流公司提供安全产品与服务。在双十一、618等全民购物节、春节等电商旺季&#xff0c;我们和…

百华鞋业开工大吉|起航新征程,扬帆再出发

爆竹声声迎鸿运&#xff0c;开工大吉启新程。2023年农历正月初六&#xff0c;山东百华鞋业有限公司迎来节后开工吉日。百华的家人们迅速集结工作岗位&#xff0c;以饱满的精神状态&#xff0c;按下工作复位键&#xff0c;俯身蹬地冲起跑&#xff0c;努力奋斗再出发&#xff01;…

史上最全测试开发工具推荐(含自动化、性能、稳定性、抓包)

一、UI自动化测试工具 1. uiautomator2 介绍: openatx开源的ui自动化工具&#xff0c;支持android和ios。主要面向的编程语言是python&#xff0c;api设计简洁易用&#xff0c;在开源社区也是很受欢迎。 原理图&#xff1a; 安装&#xff1a; pip install --upgrade --pre…

【C语言】-扫雷-简单版

前言&#xff1a;感谢各位朋友的捧场&#xff0c;这里给大家分享的是扫雷游戏的简单实现 &#xff08;PS&#xff1a;这里简单是指只实现了游戏的基础功能和主要流程&#xff0c;由于当前本人技术知识尚薄弱&#xff0c;相关的优化会通过后续的学习进行更新&#xff09; 《扫雷…

session,cookie和token的区别

session&#xff0c;cookie和token究竟是什么简述cookie&#xff0c;session&#xff0c;token作为面试必问题&#xff0c;很多同学能答个大概&#xff0c;但是又迷糊不清&#xff0c;希望本篇文章对大家有所帮助http是一个无状态协议什么是无状态呢&#xff1f;就是说这一次请…

【Java Swing】Java组件及事件处理

图形用户接口1、Swing概述2、Swing顶级容器3、布局管理器4、事件处理5、Swing常用组件1、Swing概述 Swing是一种轻量级的组件&#xff0c;它由Java语言开发&#xff0c;可以通过使用简洁的代码、灵活的功能和模块化的组件来创建优雅的用户界面Swing组建的继承关系 2、Swing顶…

企业为何都用电子招投标 现代电子招投标系统介绍

在以前的传统招投标工作中&#xff0c;主要采用人工、书面文件的模式操作&#xff0c;往往产品没有得到很好地分类&#xff0c;导致整个招投标流程变得漫长且复杂。在传统招投标过程中通常需要三个月或更长时间&#xff0c;这对于买方或供应商企业而言是非常浪费时间的。如果还…

LIO-SAM代码解析——imageProjection.cpp

目录imageProjection.cpp1. ImageProjection类1.1. imuHandler1.2. odometryHandler1.3. cloudHandler⭐1.3.1. cachePointCloud&#xff1a; 点云消息缓存与检查1.3.2. deskewInfo() &#xff1a; 获得运动补偿信息1.3.2.1. imuDeskewInfo() &#xff1a; imu的补偿信息1.3.2.…

TOOM系统加强网络舆情监控的建议,如何加强网络舆情的引导和管控

网络舆情监控是指在互联网上通过技术手段&#xff0c;对网络上的舆情信息进行收集、整理、分析、评估和处理&#xff0c;以有效地识别、预测、处理网络舆情问题。网络舆情监控工作的目的是促进舆情健康&#xff0c;防止舆情危机。接下来简单了解TOOM系统加强网络舆情监控的建议…

Python基本语法与变量类型

一、Python基本语法 1、Python注释 Python 支持两种类型的注释&#xff0c;分别是单行注释和多行注释。 &#xff08;1&#xff09;单行注释 单行注释指的是从井号#开始&#xff0c;直到这行结束为止的所有内容都是注释。 # 注释内容&#xff08;2&#xff09;多行注释 Pyt…

ccflow-代码

报表设计目录概述需求&#xff1a;设计思路实现思路分析报表设计&#xff0c;流程运维系统&#xff08;三元log&#xff09;数据源管理和维护是否:debug状态. 0 表示不是, 1 是&#xff0c;如果系统发布后&#xff0c;请将此修改成0&#xff0c;以提高执行效率。在流程运行结束…

Python语言开发学习之使用Python预测天气

什么是wttr&#xff1f; 使用Python预测天气的第一步&#xff0c;我们要了解wttr是什么。wttr.in是一个面向控制台的天气预报服务&#xff0c;它支持各种信息表示方法&#xff0c;如面向终端的ANSI序列(用于控制台HTTP客户端(curl、httpie或wget))、HTML(用于web浏览器)或PNG(…

【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突

点击事件的执行&#xff1a; <button bindtap"bindtap" bindtouchstart"touchstart" bindtouchend"touchend">按钮</button>可以看到顺序为&#xff1a;touchstart → touchend → tap 长按事件的执行&#xff1a; <button bin…

Blender 渲染与后期处理

文章目录旋转环境贴图&#xff08;天空盒&#xff09;物体只渲染其他物体的阴影而不渲染自身渲染一个背景透明的图片在后期合成中&#xff0c;将渲染结果和一张图片合成到一起输出不同的通道方法一方法二后期制作景深效果渲染单个图层图层渲染单个图层旋转环境贴图&#xff08;…

对程序员超有用的网站!一定要收藏起来!

作为一名专业的程序员&#xff0c;我们应该利用各种渠道来扩充自己的知识。然后做一个技术高超的打工人&#xff01;&#xff08;&#xff09;然后用自己超高的技术&#xff0c;赚超多超多的money! (√) 但是要获取大量的信息就要有优质可靠的信息来源。今天我就把我珍藏的&…