首页 > 其他分享 >Docker修改默认数据存储目录

Docker修改默认数据存储目录

时间:2024-07-30 19:00:44浏览次数:13  
标签:文件 存储 sudo 默认 目录 docker data Docker

在这里插入图片描述

Docker的默认存储目录是/var/lib/docker/,但是该目录一般存储空间有限,随着Docker的持续使用,安装镜像,启动容器,数据日志写入,会让该目录的的可使用空间越来越小;因此需要修改一下,默认的存储目录,让其放到空间更大的磁盘中;

查看磁盘空间大小

Linux的 df -h 命令可以查看磁盘的空间大小

df -h

返回结果

Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                  16G     0   16G   0% /dev
tmpfs                     16G     0   16G   0% /dev/shm
tmpfs                     16G  1.6G   15G  10% /run
tmpfs                     16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/centos-root   98G   11G   88G  11% /
/dev/sda1                2.0G  150M  1.9G   8% /boot
/dev/loop0               4.5G  4.5G     0 100% /mnt/centos
/dev/sdb1                886G   77M  841G   1% /data
tmpfs                    3.2G     0  3.2G   0% /run/user/0

根据上面的返回结果,可以看到 / 跟目录下的空间大小只有 98 G ,而 /data 目录下有 886G 的空间,因此将Docker 的数据存储目录放到 /data 目录下会更好;可以避免Docker 的持续使用照成空间不够用的情况;

修改默认存储目录

  1. 停止Docker服务:运行以下命令停止Docker服务:

    sudo systemctl stop docker
    

    当使用systemctl stop docker命令停止Docker服务时,如果出现错误提示

    Warning: Stopping docker.service, but it can still be activated by: docker.socket
    

    这通常是因为Docker服务是通过docker.socket来启动的。

    要正确停止Docker服务,可以使用以下命令:

    sudo systemctl stop docker.socket
    sudo systemctl stop docker.service
    

    首先停止docker.socket,然后再停止docker.service。这样可以确保Docker服务被完全停止。

    当然这只是一个警告信息,你可以直接忽略,有句话说的很好,程序员只关心错误,不关心警告

  2. 复制现有的Docker数据目录:运行以下命令复制现有的Docker数据目录到新的位置。假设你要将数据目录从/var/lib/docker迁移到/data/dockerdata

    sudo rsync -av /var/lib/docker/ /data/dockerdata/
    

    这将递归地复制所有文件和子目录。

  3. 修改Docker配置文件:打开Docker的配置文件/etc/docker/daemon.json,如果该文件不存在,则创建它。在配置文件中添加以下内容:

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

    /data/dockerdata替换为你选择的新数据目录的路径。

  4. 重新加载 daemon.json 文件:daemon.json 是 Docker 的配置文件,用于配置 Docker 引擎的行为。可以使用该文件重新配置和修改 Docker 引擎的默认行为。当我们修改了 daemon.json 文件时,需要重新加载该配置文件,使其生效。

    sudo systemctl daemon-reload
    
  5. 启动Docker服务:运行以下命令启动Docker服务:

    sudo systemctl start docker.service
    

    Docker将使用新的数据目录启动,并加载现有的容器和镜像。

  6. 验证是否修改成功:运行下面的命令

    sudo docker info
    

    查看docker info返回的结果,如果出现以下内容, Docker Root Dir: /data/dockerdata ,说明默认的存储目录修改成功。

  7. 删除原始目录文件,该命令请谨慎执行,或者先不执行,请确保默认存储目录修改成功之后再执行。

    sudo rm -rf /var/lib/docker
    

请注意,迁移Docker数据目录可能需要一些时间,具体取决于数据目录的大小和系统性能。在迁移过程中,请确保不要对Docker进行任何操作,以免数据丢失或损坏。完成迁移后,你可以验证Docker是否正常工作,并确保容器和镜像都在新的数据目录中。可以执行sudo docker images 命令,查看之前的镜像是否存在。

rsync命令参数解析

上面再复制Docker 数据目录的时候,用到了 rsync 命令,下面详细说明一下

rsync -av 是一个用于文件同步和备份的常用命令。它的含义是将源目录中的文件和目录同步到目标目录,并保持两者之间的一致性。

rsync 命令的常用参数如下:

  • -a:归档模式,表示以递归方式复制文件,并保持文件的属性(包括权限、所有者、组、时间等)。
  • -v:详细模式,显示文件传输的详细信息。
  • -r:递归复制目录及其内容。
  • -l:保持文件的硬链接。
  • -p:保持文件的权限。
  • -t:保持文件的时间戳。
  • -z:压缩传输数据。
  • -u:仅复制源目录中更新或新增的文件。
  • -h:以人类可读的格式显示文件大小。
  • --delete:删除目标目录中源目录没有的文件。

使用 rsync 命令的基本语法如下:

rsync [options] <source> <destination>

其中,<source> 是源目录或文件的路径,<destination> 是目标目录的路径。

例如,要将本地的 /path/to/source 目录同步到远程服务器的 /path/to/destination 目录,可以使用以下命令:

rsync -av /path/to/source user@remote:/path/to/destination

这将递归地将源目录中的文件和目录复制到远程服务器的目标目录,并保持两者之间的一致性。

标签:文件,存储,sudo,默认,目录,docker,data,Docker
From: https://blog.csdn.net/aaalk1001/article/details/140804010

相关文章

  • ubuntu环境下docker的安装与使用
    Ubuntu安装docker1.删除旧版本dockersudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc2.安装docker更新apt包索引,输入一下命令:aptupdate安装apt依赖包,用于通过HTTPS来获取仓库,输入以下命令sudoapt-getinstallapt-transport-httpsca-certifi......
  • MySQL存储引擎MyISAM和InnoDB
    目录1.1MySQL存储引擎1.1.1什么是存储引擎1.1.2MySQL5.7支持的引擎1.1.3如何选择MySQL引擎1.1.4可以根据以下的原则来选择MySQL存储引擎 1.1.5MyISAM和InnoDB的区别1.MyISAM存储引擎2.InnoDB存储引擎1.1.6关于MyISAM与InnoDB选择使用1.1.7.修改默认......
  • Linux中,MySQL存储引擎
    存储引擎在数据库中保存的是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库。而在设计表的时候,最关注的一个问题是使用什么存储引擎。MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种都使用不同的存储机制、索引技巧、锁定水......
  • Docker镜像构建:技术深度解析与实践指南
    本文深入分析了Docker镜像构建的技术细节,从基础概念到高级技术,涵盖了多阶段构建、安全性优化、性能提升及实战案例。旨在为专业人士提供全面的技术洞察和实用指导,以提升Docker镜像构建的效率和安全性。关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有......
  • MySQL 学习笔记 进阶(存储过程 下,存储函数,触发器,锁 上)
    存储过程 存储过程-if判断语法IF条件1THEN......ELSEIF条件2THEN......ELSE......ENDIF; 存储过程-参数 用法CREATEPROCEDURE存储过程名称([IN/OUT/INOUT参数名参数类型])BEGIN--SQL语句END; 存储过程-c......
  • 安装docker
    1)下载docker-ce:https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/如:wgethttps://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-26.1.3.tgz2)tar-xzvfdocker-26.1.3.tgzcddockercp-r./*/usr/bin/3)vi/etc/systemd/system......
  • Finalshell下载Docker【Linix】
    1、卸载旧版本(第一次安装可跳过)yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine2、安装yun库yuminstall-yyum-utils3、配置y......
  • Docker中使用自定义网络方式实现Redis集群部署与测试流程
    场景Docker中Docker网络-理解Docker0与自定义网络的使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140788458参考上面的流程实现自定义网络的实现。下面记录其应用实例,使用Docker的自定义网络实现redis集群部署。注:博客:https://blog.csdn.net/badao_......
  • 如何使用 python 在 influxdb 中创建组织和存储桶
    如何使用python在influxdb中创建组织和存储桶?我有一个python脚本,用于在influxdb中创建组织和存储桶,但它无法工作并返回未经授权的响应任何人可以使用influxdbapi帮助我解决这个问题吗?HTTPresponsebody:{"code":"unauthorized","message":"write:org......
  • 一篇文章搞懂docker日志的查看(转)
    命令docker查看容器日志使用的命令是:dockerlogs下面是dockerlogs的命令格式$dockerlogs[OPTIONS]CONTAINEROptions:--details显示更多的信息-f,--follow跟踪实时日志--sincestring显示自某个timestamp之后的日志,或相对时间,......