当前位置: 首页 > news >正文

不同系统修改 Docker Desktop 存储路径(从C盘修改到D盘)

文章目录

  • 不同系统修改 Docker Desktop 存储路径
    • PS:如果安装了Docker Desktop,请跳到第三节先行操作,不行再返回按照各自系统自行选择教程
    • 一、Windows操作步骤
      • 1. 检查 WSL2 状态
      • 2. 停止 Docker Desktop 和 WSL2
      • 3. 备份 WSL2 数据
      • 4. 注销现有 WSL2 子系统
      • 5.导入 WSL2 子系统到新路径
      • 6. 验证迁移
      • 7.清理备份文件(可选)
      • 8.注意事项:
  • **Linux 系统修改 Docker 存储路径**
    • 二、Linux操作步骤
      • **1. 停止 Docker 服务**
      • 2. 确认当前存储路径
      • 3. 重启 Docker 服务
      • 4. 验证修改
  • 三、通过 Docker Desktop 界面修改(Windows/macOS,部分版本适用)
  • 四、通用注意事项

不同系统修改 Docker Desktop 存储路径

​ 摘要:修改 Docker Desktop 中 Docker 容器的保存路径,主要涉及更改镜像和容器数据的存储位置。以下是针对 Windows 和 macOS 系统修改 Docker Desktop 默认存储路径的详细步骤。由于 Docker Desktop 依赖 WSL2(Windows Subsystem for Linux)或虚拟化技术,修改路径通常需要操作虚拟磁盘文件或配置文件。Docker Desktop 在 Windows 上默认将镜像和容器数据存储在 C:\Users\<用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx 文件中。随着镜像和容器的增加,C 盘空间可能不足。

PS:如果安装了Docker Desktop,请跳到第三节先行操作,不行再返回按照各自系统自行选择教程

一、Windows操作步骤

1. 检查 WSL2 状态

  • 打开命令提示符(以管理员身份运行)或 PowerShell。

  • 输入以下命令查看当前 WSL2 子系统状态:

    wsl --list -v
    

    输出示例:(如果不存在docker-desktop-data,则接下来docker-desktop-data的相应步骤请跳过)

    NAME                   STATE           VERSION
    * docker-desktop       Running          2docker-desktop-data  Running          2
    

    确认 docker-desktopdocker-desktop-data 存在,docker-desktop-data 是存储镜像和容器数据的子系统。

2. 停止 Docker Desktop 和 WSL2

  • 退出 Docker Desktop 应用程序(在系统托盘右键点击 Docker 图标,选择“Quit Docker Desktop”)。

  • 停止 WSL2 子系统:

    wsl --shutdown
    

    再次运行 wsl --list -v 确认所有子系统状态为 Stopped

3. 备份 WSL2 数据

  • 创建一个目标目录,例如 D:\Docker\wsl(确保目标磁盘有足够空间)。

  • 导出 docker-desktopdocker-desktop-data

    wsl --export docker-desktop D:\Docker\wsl\docker-desktop.tar
    wsl --export docker-desktop-data D:\Docker\wsl\docker-desktop-data.tar
    

    这会将当前 WSL2 子系统备份为 tar 文件,操作可能需要几分钟。

4. 注销现有 WSL2 子系统

  • 注销 docker-desktopdocker-desktop-data

    wsl --unregister docker-desktop
    wsl --unregister docker-desktop-data
    

5.导入 WSL2 子系统到新路径

  • 创建新目录用于存储 WSL2 数据,例如 D:\Docker\wsl\desktopD:\Docker\wsl\data

  • 导入备份到新路径:

    wsl --import docker-desktop D:\Docker\wsl\desktop D:\Docker\wsl\docker-desktop.tar --version 2
    wsl --import docker-desktop-data D:\Docker\wsl\data D:\Docker\wsl\docker-desktop-data.tar --version 2
    

    确保目标目录已提前创建。

6. 验证迁移

  • 启动 Docker Desktop,检查是否正常运行。

  • 运行以下命令确认存储路径:

    wsl -l -v
    

    确认 docker-desktop-data 的路径已指向新位置。

  • 拉取一个新镜像(例如 docker pull nginx),检查 D:\Docker\wsl\data 目录大小是否增加,而 C 盘路径(如 C:\Users\<用户名>\AppData\Local\Docker\wsl\data)无变化。

7.清理备份文件(可选)

  • 如果确认迁移成功,可删除备份文件(例如 D:\Docker\wsl\docker-desktop.tarD:\Docker\wsl\docker-desktop-data.tar),但保留 ext4.vhdx 文件,因为这是实际存储镜像和容器数据的虚拟磁盘。

8.注意事项:

  • 确保新路径的磁盘空间充足,迁移过程可能需要较长时间,取决于数据量。

  • 如果迁移后 Docker Desktop 无法启动,可能需要检查 WSL2 是否正常运行,或重新安装 Docker Desktop。

  • 某些旧版本 Docker Desktop(如 4.17 之前)可能存在修改路径失败的 bug,建议更新到最新版本或使用 4.16 版本进行迁移后再升级。

  • 如果迁移到非 C 盘后 Docker 运行卡顿,可能是硬盘读写性能不足,建议使用 SSD。

Linux 系统修改 Docker 存储路径

二、Linux操作步骤

在 Linux 上,Docker 默认存储路径为 /var/lib/docker。修改方法如下:

1. 停止 Docker 服务

sudo systemctl stop docker

2. 确认当前存储路径

docker info --format '{{.DockerRootDir}}'

方法一:使用符号链接

(1)移动 /var/lib/docker 到新路径(例如 /data/docker):

sudo mv /var/lib/docker /data/docker

(2)创建符号链接:

sudo ln -sf /data/docker /var/lib/docker

方法二:修改 daemon.json

(1)编辑或创建 /etc/docker/daemon.json

sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json

(2)添加以下内容:

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

(3)保存并退出。

3. 重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl start docker

4. 验证修改

  • 确认新路径:

    docker info --format '{{.DockerRootDir}}'
    
  • 拉取新镜像,检查 /data/docker 目录是否增加。

注意事项

  • 确保新路径有足够权限(chown docker:docker /data/docker)。
  • 如果使用 devicemapper 存储驱动,需在 daemon.json 中指定 storage-driver

三、通过 Docker Desktop 界面修改(Windows/macOS,部分版本适用)

对于 Docker Desktop 4.17 及以上版本,可以尝试通过图形界面修改:

  1. 打开 Docker Desktop,点击右上角齿轮图标进入“Settings”。
  2. 导航到“Resources” > “Advanced”。
  3. 在“Disk image location”中,点击“Browse”选择新路径(例如 D:\Docker\data)。
  4. 点击“Apply & Restart”保存并重启 Docker Desktop。

注意:此方法可能因版本或 bug 而失败(如卡在 loading 状态)。若失败,建议使用 WSL2 方法(Windows)或符号链接方法(macOS)。

四、通用注意事项

  • 备份数据:在操作前备份重要镜像和容器(使用 docker savedocker export)。
  • 磁盘空间:确保目标路径有足够空间,建议使用 SSD 提高性能。
  • 版本兼容性:检查 Docker Desktop 版本,旧版本可能需要特定方法(如符号链接)。
  • 验证:迁移后运行 docker info 或拉取新镜像,确认存储路径已更改。
http://www.xdnf.cn/news/1060417.html

相关文章:

  • 【AI论文】SWE-Factory:您的自动化工厂,提供问题解决培训数据和评估基准
  • PHP 生成当月日期
  • JavaEE->多线程2
  • 介绍一款免费MES、开源MES系统、MES源码
  • uni.getStorage 与 uni.getStorageSync 的区别解析
  • 矩阵变换终极笔记
  • react forwardRef和readux的connect冲突,导致ref.current获取不到值
  • infinisynapse 使用清华源有问题的暂时解决方法:换回阿里云源并安装配置PPA
  • 【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率
  • AWK在网络安全中的高效应用:从日志分析到威胁狩猎
  • 苍穹外卖-2025 完成基础配置环节(详细图解)
  • 【嵌入式硬件实例】-555定时器控制舵机/伺服电机
  • 力扣网C语言编程题:接雨水(动态规划实现)
  • SCRM软件数据分析功能使用指南:从数据挖掘到商业决策
  • 什么是Nacos
  • TDengine 集群超能力:超越 InfluxDB 的水平扩展与开源优势
  • jquery 赋值时不触发change事件解决——仙盟创梦IDE
  • repo 工具
  • 动态规划笔记
  • FastMCP框架进行MCP开发:(一)基础环境搭建及测试
  • 云XR(AR/VR)算力底座关键特征与技术路径
  • 颈部不自主偏移现象解析
  • systemverilog中关于多线程的若干思考
  • SAP LPD(launchpad)配置使用手册
  • C#学习13——正则表达式
  • 计算机网络学习笔记:TCP可靠传输实现、超时重传时间选择
  • leetcode 2294. 划分数组使最大差为 K 中等
  • Kernel K-means:让K-means在非线性空间“大显身手”
  • 机器学习×第十二卷:回归树与剪枝策略——她剪去多余的分支,只保留想靠近你的那一层
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】