博客
关于我
【Docker知识】重定向 Docker 的根目录
阅读量:795 次
发布时间:2023-02-24

本文共 1695 字,大约阅读时间需要 5 分钟。

Docker数据目录配置说明

Docker将镜像、运行中的容器及持久卷数据存储在系统驱动器上的单个共享目录根目录中。如果您希望将Docker对象(如容器)通过U盘或其他外部存储设备传输,需要为其分配个性化存储空间(即重定向数据路径)。

本文适用于Linux系统的Docker引擎以及Windows和Mac上的Docker桌面环境。为了实现数据目录的个性化设置,您需要找到对应平台的Docker配置文件daemon.json的位置。

在不同平台上,Docker配置文件的位置如下:

  • Linux系统/etc/docker/daemon.json
  • Windows系统%programdata%\docker\config\daemon.json
  • Mac系统~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/daemon.json

对于Windows和Mac用户,Docker推荐通过界面操作配置文件,而非手动编辑文本文件。您可以进入Docker桌面界面,进入偏好设置,选择“Docker引擎”下的“编辑文件”进行配置。

Docker数据目录的位置由daemon.json文件中的data-root参数控制。旧版本(版本早于17.06)采用图形界面配置。您可以通过运行docker version命令查看当前Docker版本信息。

在daemon.json文件中查找或添加data-root参数,并将所需的目录路径设置为其值。以下是一个Linux示例,展示了如何将Docker数据存储到安装在文件系统中的外部驱动器:

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

修改配置后,您需要重启Docker守护进程。具体操作如下:

sudo service docker restart

对于Windows和Mac用户,Docker Desktop需要通过退出后重新启动以应用更改。此外,若希望保留现有数据,请确保将当前数据目录的内容复制到新路径,否则将无法访问以前创建的容器和图像。以下命令可用于将现有数据复制到新路径:

sudo rsync -aSv /var/lib/docker/ /mnt/docker-data

在不重启守护进程的情况下,可以通过创建从/var/lib/docker到新位置的符号链接来实现数据目录的迁移。这种方法适用于主机空间不足或无法重启Docker服务的情况。

具体操作步骤如下:

  • 将现有Docker数据复制到新目录:
  • sudo rsync -aSv /var/lib/docker/ /mnt/docker-data
    1. 创建符号链接,将/var/lib/docker指向目标位置:
    2. sudo ln -s /mnt/docker-data/ /var/lib/docker

      请注意:此方法仅适用于不影响写入数据的场景。如果在复制过程中存在新数据写入,可能导致数据不一致。

      定制数据目录后,所有镜像、容器、插件、Swarm配置、卷以及Docker构建缓存数据都会被重新存储到新路径。因此,选择一个性能优越的存储位置至关重要。若不需要所有数据类型,请考虑清理冗余资源或将未使用镜像推送至中央Registry,以释放主机资源。

      您也可以通过在启动守护程序时传递--data-root标志来临时使用不同的数据目录。这可用于数据目录切换或运行干净实例:

      sudo /usr/bin/dockerd --data-root /mnt/docker-data

      此标志将忽略daemon.json文件中的设置,您的配置文件将保持不变,以便后续恢复。

      总结:Docker将所有数据存储在/var/lib/docker目录树中,包括镜像、容器及卷等。通过修改daemon.json文件或使用--data-root标志,您可以自定义Docker数据目录。请注意,数据目录更改会导致现有数据无法访问,除非已复制到新路径。

    转载地址:http://bnpfk.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | OpenCV中八种不同的目标追踪算法
    查看>>
    OpenCV与AI深度学习 | OpenCV图像拼接--Stitching detailed使用与参数介绍
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(一) :直接拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
    查看>>
    OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
    查看>>
    OpenCV与AI深度学习 | 使用 OpenCV 创建自定义图像滤镜
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV图像修复技术去除眩光
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV检测并计算直线角度
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV轮廓检测提取图像前景
    查看>>
    OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
    查看>>
    OpenCV与AI深度学习 | 使用PyTorch进行小样本学习的图像分类
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>