docker pull 命令本身不能通过一个参数直接指定镜像的下载目录。镜像的存储位置是由 Docker 守护进程(Daemon)的配置决定的。

不过,我们可以通过修改 Docker 的全局配置,来改变所有镜像(包括后续 pull 的镜像)的默认存储位置。以下是几种在 Windows 下实现的方法。

方法一:通过 Docker Desktop 图形界面修改(最简单,推荐)

这是最直观、最安全的方法,适用于使用 WSL 2 后端的 Docker Desktop。

  1. 停止 Docker:右键点击系统托盘中的 Docker 图标,选择 “Quit Docker Desktop” 退出。
  2. 移动数据:将整个 Docker 数据文件夹从默认位置(通常是 C:\Users\你的用户名\AppData\Local\Docker复制(建议先复制,确认无误后再删除原文件)到你希望存放的新位置,例如 D:\Docker
  3. 重新配置:重新启动 Docker Desktop。
  4. 修改设置
    • 点击 Docker Desktop 右上角的 设置(⚙️) 图标。
    • 在左侧菜单选择 Resources -> Advanced
    • “Disk image location” 处,点击 “Browse…” 按钮,选择你刚才复制数据到的新位置(例如 D:\Docker)。
    • 点击 “Apply & Restart” 应用并重启 Docker。

重启后,Docker 的所有数据(包括新拉取的镜像)就会存储在你指定的新目录了。

方法二:修改配置文件 daemon.json(进阶)

此方法通过修改 Docker 引擎的配置文件来更改 data-root(数据根目录),适用于所有后端。

  1. 找到配置文件:配置文件通常位于 C:\ProgramData\Docker\config\daemon.json。如果文件或文件夹不存在,请手动创建。
  2. 编辑文件:使用文本编辑器(如记事本)打开该文件,添加或修改 data-root 配置项,指向你的新目录。注意 Windows 路径中的反斜杠需要转义。
    {
      "data-root": "D:\\DockerData"
    }
    
  3. 重启 Docker:保存文件并重启 Docker Desktop,使配置生效。
  4. 验证结果:打开 PowerShell,执行 docker info 命令,在输出中查看 “Docker Root Dir” 一项,确认是否已变更为你设置的新路径。

方法三:针对 WSL 2 后端的特殊说明

如果你使用的是 WSL 2 后端,Docker 的数据实际上存储在 WSL 2 的虚拟磁盘中。

  • docker info 命令显示的 Docker Root Dir 会是 WSL 2 内部的路径(如 /var/lib/docker)。
  • 此时,方法一(通过 Docker Desktop 设置修改 Disk image location)是更推荐且有效的方式。
  • 你也可以在 WSL 2 内部通过修改 daemon.json 文件来更改存储位置,但这通常更复杂,不推荐新手操作。

总结

docker pull 本身不能指定目录,但我们可以通过修改 Docker 引擎的全局存储位置来间接实现。对于绝大多数 Windows 用户,方法一(通过 Docker Desktop 图形界面) 是最简单、最安全的选择。修改后,所有新拉取的镜像都会保存到你指定的目录中。

更多推荐