Docker存储目录问题,如何修改Docker默认存储位置?(Docker存储路径、Docker存储空间)etc/docker/daemon.json

news2024/11/17 3:09:38

文章目录

  • 如何更改docker默认存储路径?
    • 版本1(没测试)
    • 版本2(可行)
      • 1. 停止 Docker 服务:
      • 2. 创建新的存储目录:
      • 3. 修改 Docker 配置文件:
      • 4. 移动现有的 Docker 数据:
      • 5. 重新启动 Docker 服务:
      • 6. 验证修改
      • 7. 真实验证(记录各时间点和存储占用)
        • Thu 11 Jul 2024 01:33:57 PM CST
        • Thu 11 Jul 2024 04:04:38 PM CST
  • 为什么存在以上两种修改方法,有何异同?(修改`etc/systemd/system/docker.service.d/override.conf`和修改`etc/docker/daemon.json` )

如何更改docker默认存储路径?

版本1(没测试)

默认情况下,Docker 在 Linux 上安装时会将其数据(如镜像和容器)存储在 /var/lib/docker 目录下,这个目录通常位于根分区 /。如果你的根分区 / 的空间不足,你可以考虑将 Docker 的数据目录移动到其他分区,或者在安装 Docker 时直接配置它使用其他分区。

要更改 Docker 的默认存储位置,你可以通过修改 Docker 的配置文件或在启动 Docker 服务时设置环境变量来指定新的数据目录。下面是一些步骤说明如何进行配置:

  1. 停止 Docker 服务:

    sudo systemctl stop docker
    

    在这里插入图片描述

  2. 修改 Docker 配置文件(如果你使用的是 systemd):

    • 打开或创建 Docker 的 systemd 配置文件(一开始没有这个文件是正常的):
      sudo vi /etc/systemd/system/docker.service.d/override.conf
      
    • 添加以下内容来指定新的数据目录,假设你想将数据存储在 /mnt/docker/
      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd --data-root /mnt/docker -H fd:// --containerd=/run/containerd/containerd.sock
      
    • 保存并关闭文件。
  3. 重新加载 systemd 配置并重新启动 Docker 服务:

    sudo systemctl daemon-reload
    sudo systemctl start docker
    
  4. 检查 Docker 是否使用新的数据目录:

    docker info | grep "Docker Root Dir"
    

确保新的数据目录所在的分区有足够的空间,以避免在使用 Docker 时遇到空间不足的问题。

版本2(可行)

要修改 Docker 的存储路径至 /data/docker,您可以按照以下步骤操作:

1. 停止 Docker 服务:

打开终端,使用以下命令停止 Docker 服务:

sudo systemctl stop docker.socket
sudo systemctl stop docker

一开始只执行一条停不了:
在这里插入图片描述
在这里插入图片描述
后面两条执行就能停了:

在这里插入图片描述

2. 创建新的存储目录:

如果 /data/docker 目录还不存在,使用以下命令创建它:

sudo mkdir -p /data/docker

3. 修改 Docker 配置文件:

编辑 Docker 的 daemon 配置文件 /etc/docker/daemon.json。如果该文件不存在,您需要创建它。

sudo vi /etc/docker/daemon.json

在文件中添加或修改以下内容:

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

保存并关闭文件。

4. 移动现有的 Docker 数据:

如果您的 Docker 安装中已经有数据,并且您希望保留这些数据,可以将现有的数据移动到新的目录:

sudo rsync -aP /var/lib/docker/ /data/docker

在这里插入图片描述

5. 重新启动 Docker 服务:

使用以下命令重新启动 Docker 服务:

sudo systemctl start docker.socket
sudo systemctl start docker

6. 验证修改

检查 Docker 是否正确使用新的存储路径,可以查看 Docker 信息:

docker info | grep 'Docker Root Dir'

在这里插入图片描述

现在 Docker 已经成功地使用 /data/docker 作为其根目录了。至于您看到的警告信息 “WARNING: No swap limit support”,这是一个常见的信息,指的是您的 Linux 系统上没有启用内存交换限制的支持。

在 Docker 中,这种警告通常不会影响 Docker 容器的正常运行,它只意味着 Docker 无法强制限制容器的交换内存使用量。这通常与 Linux 内核的某些配置有关,特别是 cgroup 的配置。

注意:如果不放心,可以执行mv /var/lib/docker /var/lib/docker_old备份检测下

7. 真实验证(记录各时间点和存储占用)

通过使用一下两条命令:

date
df -BM
Thu 11 Jul 2024 01:33:57 PM CST
root@ai-video-ecs-01:/userdata/tmp# date
Thu 11 Jul 2024 01:33:57 PM CST
root@ai-video-ecs-01:/userdata/tmp#
root@ai-video-ecs-01:/userdata/tmp#
root@ai-video-ecs-01:/userdata/tmp# df -BM
Filesystem                        1M-blocks  Used Available Use% Mounted on
udev                                 32078M    0M    32078M   0% /dev
tmpfs                                 6425M    4M     6422M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv    38122M 8911M    27445M  25% /
tmpfs                                32124M    0M    32124M   0% /dev/shm
tmpfs                                    5M    0M        5M   0% /run/lock
tmpfs                                32124M    0M    32124M   0% /sys/fs/cgroup
/dev/loop1                              64M   64M        0M 100% /snap/core20/2318
/dev/loop0                              64M   64M        0M 100% /snap/core20/1828
/dev/loop2                              50M   50M        0M 100% /snap/snapd/18357
/dev/loop3                              39M   39M        0M 100% /snap/snapd/21759
/dev/vda2                             1946M  109M     1719M   6% /boot
/dev/loop4                              92M   92M        0M 100% /snap/lxd/24061
/dev/sda1                           749867M 4140M   707565M   1% /ky
/dev/sda2                          9401234M 2884M  8924482M   1% /data
tmpfs                                 6425M    0M     6425M   0% /run/user/1000
overlay                            9401234M 2884M  8924482M   1% /data/docker/overlay2/c385332babdae4ee85601ffa1dd1ebe6c36fc1f618389ace09b2051731d5fa8c/merged
overlay                            9401234M 2884M  8924482M   1% /data/docker/overlay2/31a24b6f39c2ea25d700754b5c9ea78574e772589690437fd60e4b60fac15c0c/merged
overlay                            9401234M 2884M  8924482M   1% /data/docker/overlay2/88149e56439d9bad5b2b785f12ff77b6052c5ba369f53f9e12a38698c34615ce/merged
overlay                            9401234M 2884M  8924482M   1% /data/docker/overlay2/b2171ae8eaa2b4b6bf61de50165b2e885f6e2d4373d02fd1e492cc1d2158bd9b/merged
overlay                            9401234M 2884M  8924482M   1% /data/docker/overlay2/3e9af67e01934706a6712e2a6601292b105c26d5fecf82218f8d7ef65ca30b3d/merged
overlay                            9401234M 2884M  8924482M   1% /data/docker/overlay2/341e8bc8f48a17d24ee4005c45cda9e121bececd2b0fea5463b337acbce64f04/merged
overlay                            9401234M 2884M  8924482M   1% /data/docker/overlay2/6ee97fa0e1597535d0d70be41d5a3220c6f58ff033dba5388a53034afbeb8f5f/merged
root@ai-video-ecs-01:/userdata/tmp#

Thu 11 Jul 2024 04:04:38 PM CST
hw@ai-video-ecs-01:~$ date
Thu 11 Jul 2024 04:04:38 PM CST
hw@ai-video-ecs-01:~$
hw@ai-video-ecs-01:~$ df -BM
Filesystem                        1M-blocks  Used Available Use% Mounted on
udev                                 32078M    0M    32078M   0% /dev
tmpfs                                 6425M    4M     6422M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv    38122M 8911M    27444M  25% /
tmpfs                                32124M    0M    32124M   0% /dev/shm
tmpfs                                    5M    0M        5M   0% /run/lock
tmpfs                                32124M    0M    32124M   0% /sys/fs/cgroup
/dev/loop1                              64M   64M        0M 100% /snap/core20/2318
/dev/loop0                              64M   64M        0M 100% /snap/core20/1828
/dev/loop2                              50M   50M        0M 100% /snap/snapd/18357
/dev/loop3                              39M   39M        0M 100% /snap/snapd/21759
/dev/vda2                             1946M  109M     1719M   6% /boot
/dev/loop4                              92M   92M        0M 100% /snap/lxd/24061
/dev/sda1                           749867M 4141M   707564M   1% /ky
/dev/sda2                          9401234M 2886M  8924479M   1% /data
tmpfs                                 6425M    0M     6425M   0% /run/user/1000

为什么存在以上两种修改方法,有何异同?(修改etc/systemd/system/docker.service.d/override.conf和修改etc/docker/daemon.json

在修改 Docker 的存储位置时,可以通过修改 etc/docker/daemon.jsonetc/systemd/system/docker.service.d/override.conf 来实现,两种方式都是正确的,但它们有不同的用途和适用情况:

  1. 修改 /etc/docker/daemon.json

    • 这种方法通过 Docker 的配置文件来设置 Docker 的默认行为,包括存储位置、日志级别、网络配置等。
    • 要修改存储位置,你可以在 daemon.json 文件中设置 data-root 属性,指向新的存储路径。例如:
      {
        "data-root": "/new/path/to/docker-data"
      }
      
    • 这种方法的优点是配置简单,且直接通过 Docker 自己的配置文件进行管理,易于理解和维护。
  2. 修改 /etc/systemd/system/docker.service.d/override.conf

    • 这种方法适用于在使用 systemd 管理 Docker 服务的系统上。通过 systemd 的配置覆盖文件来修改 Docker 服务的启动参数。
    • 你可以通过创建或修改 override.conf 文件,添加一个新的 ExecStart 行,指定新的存储位置。例如:
      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd --data-root /new/path/to/docker-data
      
    • 注意,需要先清空原有的 ExecStart 设置(ExecStart=),然后重新定义。这样可以确保使用你的自定义设置启动 Docker。
    • 这种方法允许你对 Docker 的启动过程进行更细粒度的控制,但相对复杂,需要对 systemd 的配置有一定了解。

总结:选择哪种方法取决于你的具体需求和你对系统的控制级别。如果你希望通过 Docker 自身的配置来管理,使用 daemon.json 是更直接的方法。如果你需要更复杂的配置或者想要控制服务的启动参数,使用 systemd 的 override.conf 方法会更合适。

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

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

相关文章

盲人出行体验攻略:蝙蝠避障,点亮前行的明灯

在繁华喧嚣的都市中,每一步都充满了未知与挑战,而对于盲人朋友们来说,出行更是一场无声的冒险。他们凭借着内心的勇气和坚韧的意志,在黑暗中摸索前行,每一步都承载着对生活的热爱与追求。今天,我们要深入探…

YOLOv8改进 | 注意力机制| 利用并行子网络构建深度较浅但性能卓越的网络【全网独家】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

jdevelope安装

准备 1.jdk1.8(已经安装不做记录) 2.下载jdevelope安装包 3.安装包安装jdevelope开发工具 4.创建或导入项目 下载jdevelope安装包 官网下载地址:https://edelivery.oracle.com 安装包安装jdevelope开发工具 cmd管理员权限运行安装脚本…

新质生产力赛道核心解读,机械制造何以“向智向新”

机械行业,国民经济的坚实基石与核心驱动力,为各行各业提供高效生产工具。立于产业链的中游,向上游紧密连接着高精尖的核心零部件制造商与基础原材料供应商;向下游,则广泛渗透并深刻影响着基础设施建设、交通运输&#…

7.11日学习打卡----初学Redis(六)

7.11日学习打卡 目录: 7.11日学习打卡一. redis事务事务的概念与ACID特性Redis事务三大特性Redis事务执行的三个阶段Redis事务基本操作 二. redis集群主从复制主从复制环境搭建主从复制原理剖析 哨兵监控哨兵监控环境搭建哨兵工作原理剖析 故障转移Cluster模式Clust…

如何用脉购CRM健康档案管理系统显著提升用户粘性与忠诚度

如何用脉购CRM健康档案管理系统显著提升用户粘性与忠诚度 脉购CRM健康档案管理系统以其创新的健康管理理念和先进的技术手段,为医疗机构和用户之间建立了一座高效的沟通桥梁。通过该系统,用户的健康档案得到了全面而细致的管理,不仅提高了医…

Node多版本管理器NVM安装使用

背景 有的时候开发前端项目需要用到不同版本的nodejs环境,此时就是需要有一个版本管理工具可以灵活的切换node版本,方便维护不同的开发环境 node版本管理工具 nvm工具介绍 安装node很方便,只需要一条命令可以轻松切换node版本可以多版本n…

MyBatis框架学习笔记(三):MyBatis重要文件详解:配置文件与映射文件

1 mybatis-config.xml-配置文件详解 1.1 说明 (1)mybatis 的核心配置文件(mybatis-config.xml),比如配置 jdbc 连接信息,注册 mapper 等等都是在这个文件中进行配置,我们需要对这个配置文件有详细的了解 (2&#x…

4.感知机

感知机 ​ 给定输入 x x x&#xff0c;权重 w w w&#xff0c;和偏移 b b b,感知机输出&#xff1a; KaTeX parse error: Unknown column alignment: o at position 16: \begin{array} o̲ \sigma(<w,x>… 或者是二分类&#xff1a;-1或1 Expected node of symbol gro…

全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方法和类方法,你分得清吗?

全网最适合入门的面向对象编程教程&#xff1a;14 类和对象的 Python 实现-类的静态方法和类方法&#xff0c;你分得清吗&#xff1f; 摘要&#xff1a; 本文主要介绍了Python中类和对象中的类方法和静态方法&#xff0c;以及类方法和静态方法的定义、特点、应用场景和使用方…

机器学习(五) -- 监督学习(7) --SVM2

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;7&#xff09; --SVM1 下篇&#xff1a; 前言 tips&#xff1a;标题前有“***”的内容为补充内容&#xff0c;是给好奇心重的宝宝看的&#xff0c;可自行跳过。文章内容被“文…

Spring支持人工智能应用框架-SpringAi

简介 人工智能技术和日益成熟&#xff0c;开发企业级人工智能的应用已成为一个热门的趋势。Spring AI 是一个用于 AI 工程的应用框架&#xff0c;目的是为了简化AI应用的对接、部署、维护和扩展。 SpringAi的灵感来自LangChain和LlamaIndex&#xff0c;但是SpringAi并不是直接…

RK3568平台(显示篇)主屏副屏配置

一.主屏副屏配置 目前在RK3568平台上有两路HDMIOUT输出&#xff0c;分别输出到两个屏幕上&#xff0c;一路配置为主屏&#xff0c;一路配置为副屏。 硬件原理图&#xff1a; &hdmi0_in_vp2 {status "okay"; };&hdmi1_in_vp0 {status "okay"; }…

断电的固态硬盘数据能放多久?

近日收到一个网友的提问&#xff0c;在这里粗浅表达一下见解&#xff1a; “网传固态硬盘断电后数据只能放一年&#xff0c;一年之后就会损坏。但是我有一个固态硬盘已经放了五六年了&#xff08;上次通电还是在2018年左右&#xff0c;我读初中的时候&#xff09;&#xff0c;…

css实现渐进中嵌套渐进的方法

这是我们想要的实现效果&#xff1a; 思路&#xff1a; 1.有一个底色的背景渐变 2.需要几个小的块级元素做绝对定位通过渐变filter模糊来实现 注意&#xff1a;这里的采用的定位方法&#xff0c;所以在内部的元素一律要使用绝对定位&#xff0c;否则会出现层级的问题&…

HCIP.ppp协议(点到点)认证阶段

ppp协议 ppp是点到点的协议 1.兼容性很好 2.可以进行认证和授权 3.可移植性强 三个阶段 1.链路协商阶段 LCP协商------去协商ppp链路会话 2.认证&#xff08;可选&#xff09; 3.NCP协商------网络层协商阶段&#xff08;根据网络层的不同NCP协议就会存在一个对应的NC…

【电子通识】无源元件与有源元件的定义和区别是什么?

当提到构成电路的电子器件时,许多人可能会想到晶体管、电容器、电感器和电阻器等器件。一般情况下,我们使用的电子器件分为两大类,即“有源元件”和“无源元件”。 有源元件是主动影响(如放大、整流、转换等)所供给电能的元件。 无源元件是对所供给的电能执行被动…

代码随想录算法训练营Day62|冗余连接、冗余连接II

冗余连接 108. 冗余连接 (kamacoder.com) 考虑使用并查集&#xff0c;逐次将s、t加入并查集中&#xff0c;当发现并查集中find(u)和find(v)相同时&#xff0c;输出u和v&#xff0c;表示删除的边即可。 #include <iostream> #include <vector> using namespace s…

Android高级——Logger日志系统

Logger日志系统 Logger日志系统是基于内核中的Logger日志驱动程序实现将日志记录保存在内核空间中使用一个环形缓冲区来保存日志&#xff0c;满了之后&#xff0c;新的日志就会覆盖旧的日志 日志类型 main&#xff0c;记录应用程序级别system&#xff0c;记录系统级别radio&…

7月11日学习打卡,数据结构栈

大家好呀&#xff0c;本博客目的在于记录暑假学习打卡&#xff0c;后续会整理成一个专栏&#xff0c;主要打算在暑假学习完数据结构&#xff0c;因此会发一些相关的数据结构实现的博客和一些刷的题&#xff0c;个人学习使用&#xff0c;也希望大家多多支持&#xff0c;有不足之…