在 Windows 10 Pro 上更改 Docker 本机映像位置

Posted

技术标签:

【中文标题】在 Windows 10 Pro 上更改 Docker 本机映像位置【英文标题】:Change Docker native images location on Windows 10 Pro 【发布时间】:2017-03-20 20:15:01 【问题描述】:

这不是重复 Change Docker machine location - Windows

我在启用 Hyper-V 的 Windows 10 Pro 上使用 docker native 版本 1.12.1-stable(内部版本:7135)。 所以 docker 与 VirtualBox 一起运行,我也没有文件夹 C:\Users\username\.docker

我想将 docker 的图像、缓存等移动到我的辅助驱动器 D:\

我想我应该编辑 Docker Daemon 配置。

我尝试添加"graph": "/D/docker"。 Docker 正确启动,但由于错误无法拉取任何图像

打开/D/docker/tmp/GetImageBlob135686954:没有这样的文件或目录

如何告诉 docker 使用另一个路径来存储它的图像等?

【问题讨论】:

致那些正在寻找使用 WSL2 的解决方案的人,请访问:***.com/questions/62441307/… 【参考方案1】:

我找到了解决方案here

Docker 本机,在 Windows 上,在 Hyper-V 虚拟机中运行。

移动现有的 docker 虚拟机

我必须将 docker 使用的虚拟机移动到所需的位置。 我使用 Hyper-V 管理器 的 GUI 完成了这项工作。 用于 docker 的 VM 称为 MobyLinuxVM

右击 MobyLinuxVM 选择移动 选择所需位置

设置未来 Hyper-V 虚拟机的位置

为了确保 Hyper-V 的未来虚拟机将存储在我的辅助驱动器上, 我关注了those instructions

在 powershell 终端中(目标文件夹必须存在

SET-VMHOST –computername <computer> –virtualharddiskpath 'D:\Hyper-V_Virtual-Hard_Disks' SET-VMHOST –computername <computer> –virtualmachinepath 'D:\Hyper-V_VMs'

【讨论】:

每当我重新启动或重新启动 Docker 时,它都会回到原始目录 移动 vm 后重启 docker 时,硬盘位置设置回默认值,以创建新的空虚拟硬盘结束。显然,所有现有的码头工人的东西都消失了。我的解决方法是在默认位置创建一个指向被驱逐者的符号链接。【参考方案2】:

编辑 Docker 守护程序配置并使用 "data-root": "D:\\docker" 而不是 "graph": "/D/docker"。 这会将所有新下载的图像移动到D:\docker 文件夹。

对于旧 Docker 版本,使用图形 "graph": "D:\\docker",“图形”已被弃用。

【讨论】:

这是否适用于 Windows 2019 服务器上的 Docker 企业?具体来说,Docker 版本 19.03.5,构建 2ee0c57608。【参考方案3】:

有一种更简单的方法可以做到这一点: 转到 Docker 设置 > 高级 > 更改“磁盘映像位置”,并在出现提示时单击“应用”。 Docker 引擎将关闭虚拟机并为您将其移动到新位置。

警告:不得压缩新位置。如果是,那么 Docker 不会显示任何错误,只是不会更改位置。

【讨论】:

您使用的 docker 版本是什么?因为我没有Advance 我一直在尝试这个,当我应用更改时,Docker 只是将其设置回c:\Users\Public\Documents 中的位置,默认情况下它需要所有内容 没有高级选项 在 Docker Community v2.3.x 中,点击路径为Docker > Settings > Resources > Disk Image location(您可能需要向下滚动才能看到“磁盘映像位置”选项。 为什么我没有看到这些高级选项(我在 WSL 2 上运行)【参考方案4】:

这些步骤都不适合我。重新启动或 Docker 重新启动后,它将移回原始路径。对我有用的是使用Junction

停止泊坞窗引擎

在新位置创建一个目标文件夹:

mkdir d:\docker\vhd

将文件夹Virtual Hard Disks复制到目标文件夹

重命名(并备份)原始文件夹

rename “C:\Users\Public\Documents\Hyper-V\Virtual hard disks” “C:\Users\Public\Documents\Hyper-V\Virtual hard disks_backup”

创建硬符号链接(结)

junction.exe "C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks" "d:\docker\vhd\Virtual Hard Disks"

启动 docker 引擎

【讨论】:

这是 Windows 中不错的解决方案,对我有用。谢谢。【参考方案5】:

Docker 版本:2.2.0.3 (42716)

    右键单击桌面托盘上的泊坞窗图标

    点击设置

3 单击左侧菜单中的资源,然后在磁盘映像位置下单击浏览并更改位置

    点击应用并重启

【讨论】:

docker desktop 2.3.0.2的屏幕没有这些配置 还以为屏幕不见了,但是向下滚动有帮助。根据使用的主题,滚动窗格可能很难看到... 您应该在“设置”->“常规”中禁用“使用基于 WSL 2 的引擎”以查看高级选项。 这里似乎没有人意识到 Docker Desktop for Windows 有两种模式:Linux Containers 和 Windows Containers。 (模式在托盘图标上下文菜单中设置。)如果您处于 Windows 容器模式,则不存在磁盘映像位置选项。 我不在 Windows 容器中(因为它需要 Windows Pro 或 Enterprise Build 才能启用它),但我的 docker 也没有这些配置。 ps:docker版本:2.5.0.0【参考方案6】:

对于那些期待 2020 年的人。以下适用于 Windows 10 机器:

    在 Hyper-V 管理器的全局操作窗格中单击 Hyper-V 设置… 在虚拟硬盘下将位置从默认更改为 您想要的位置。 在虚拟机下将位置从默认更改为您的 所需的位置,然后点击应用。

    单击“确定”关闭 Hyper-V 设置页面。

【讨论】:

【参考方案7】:

在 2020 年为“在 Windows 10 Pro 上更改 Docker 本机映像位置”是,

    退出 docker 桌面 打开/编辑配置文件“C:\ProgramData\Docker\config\daemon.json” 添加设置“data-root”:“D:\Virtual Machines\Docker” 现在启动 docker 桌面 运行命令“docker info”查看设置“Docker Root Dir: D:\Virtual Machines\Docker” 拉取 docker 镜像,例如:docker pull mongo 您可以在“D:\Virtual Machines\Docker\windowsfilter”文件夹中找到下载的镜像

【讨论】:

你可以把代码放到 Docker -> Settings -> Docker Engine 应该是 2 "\\" => "data-root": "D:\\VirtualMachines\\Docker" 应该使用正斜杠,如 "data-root": "D:/VirtualMachines/Docker"【参考方案8】:

在我的情况下(Windows10 with Docker Desktop)以上解决方案都没有帮助我。我找到了解决方案,运行此命令。此命令将 docker 目录更改为驱动器 D:(不要忘记退出 docker 桌面

wsl --shutdown
wsl --export docker-desktop-data docker-desktop-data.tar
wsl --unregister docker-desktop-data
wsl --import docker-desktop-data D:\docker-new-repo\ docker-desktop-data.tar --version 2

现在您可以删除 .tar 文件

【讨论】:

感谢您为我指明正确的方向。为我工作。但它需要我从dev.to/kimcuonthenet/… 获得的更多步骤 我认为你最后缺少的 2。 “--版本 2” 这(在@Milind 的链接中)有效。谢谢。我想我可以在之后删除 tar 文件? 谢谢。它确实在新位置设置了发行版。然而,旧发行版“ext4.vhdx”仍在不断更新,大小不断增加。我们怎样才能阻止这种情况? Docker Desktop 有 3 种模式:带有 WSL 的 Linux 容器、带有 Hyper-V 的 Linux 容器和 Windows 容器。此解决方案适用于配置由 WSL 管理的 带有 WSL 的 Linux 容器。 see information from Docker Docs【参考方案9】:

我建议查看 Microsoft 文档 docker engine on windows,它是允许更改设置 "data-root": "" 的 daemon.json 文件。

【讨论】:

【参考方案10】:

如果使用 Docker 桌面 GUI 出现问题,使用 Hyper-V 时:

    关闭 Docker 桌面 编辑 c:\users[USERNAME]\AppData\Roaming\Docker\settings.json 您需要编辑“dataFolder”条目。使用双反斜杠。 例如:"dataFolder": "D:\Demo\Hyper-V\DockerDesktop\DockerDesktop", 重启 Docker 桌面

如果 Docker Desktop 无法跟踪您的数据文件夹的位置,您也可以使用上述方法,因为 GUI 不允许您将其设置为以前使用的位置。

【讨论】:

【参考方案11】:

来自 Docker Desktop 的配置对我有用(最新版本 V20.10.8)

步骤

    进入设置 选择“Docker 引擎”选项 在配置文件中添加属性“data-root”:“D:\Docker” 应用并重启

Settings

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review

以上是关于在 Windows 10 Pro 上更改 Docker 本机映像位置的主要内容,如果未能解决你的问题,请参考以下文章

PHP cURL 突然无法在 Windows 10 Pro 上加载

在 windows 10 pro 上设置 python

在Windows10 Pro上安装NLTK时出错

如何更改 Java 程序的 Dock 图标?

如何在 Mac 的 Dock 上对应用程序的多个窗口进行分组

Beyond Compare 4 作为 Windows 10 Pro 上 Git 的 Difftool