76

我在 Windows 7 上使用 docker 工具箱来运行 docker。(码头工人版本 1.9.1)

事实证明,docker 机器在 C:\Users\username\.docker\machine\machines\default 中创建其 VM。当我提交图像时,此位置的 VM 大小会膨胀。由于是 Windows,我负担不起 C 盘上的奢华空间。

有什么办法可以更改默认机器的位置?

4

13 回答 13

61

这对我在 Windows 7 上非常有效:

  1. 将 MACHINE_STORAGE_PATH 环境变量设置为要用于 Docker 机器/VM、缓存等的位置的根目录。
  2. 安装 Docker 工具箱
  3. 运行 Docker 快速入门终端

Docker Toolbox 现在将在 MACHINE_STORAGE_PATH 指向的位置创建所有文件。

更新:

请注意,使用新存储路径创建新 VM 并不理想,因为 Docker 快速启动终端脚本似乎不适用于未命名为“默认”的任何内容。

如果您已经在 C: 驱动器中有一个 VM,那么最简单的做法是转到 Oracle VirtualBox 并删除“默认”VM,卸载 Docker Toolbox,删除 C:\Users\<username>。 docker\,然后按照上面的 3 个步骤操作。

注意:可能不需要卸载和重新安装 Docker Toolbox。但是没有它我还没有测试过。

更新

要同时移动 Docker 证书,请将DOCKER_CERT_PATH变量设置为指向新驱动器的路径。感谢@Nutle 的提示。

于 2016-05-16T04:59:50.400 回答
58

您可以将.docker目录移动到另一个驱动器并创建一个连接点。

请注意,常规快捷方式不起作用。

例如:

.docker目录从移动C:\Users\usernameD:\

并运行:

C:\Users\username>mklink /j .docker D:\.docker
Junction created for .docker <<===>> D:\.docker
于 2017-08-03T19:05:18.507 回答
31

自 2015 年以来,现在(2017 年 6 月)Hyper-V允许您定义VHDX文件的位置:

请参阅Docker for Windows 1.13.0, 2017-01-19(稳定版)

可以移动包含图像和非主机安装卷的 VHDX 文件(使用 UI 中的“高级”选项卡)

这将修改%APPDATA%\Docker\settings.json一行:

"MobyVhdPathOverride":"C:\\Users\\Public\\Documents\\Hyper-V\\New folder\\MobyLinuxVM.vhdx"

https://cdn-enterprise.discourse.org/docker/uploads/default/optimized/2X/6/6193445cf15811ce18317c727af258adb2d16c9d_1_690x447.jpg

有关更多信息,请参阅此线程


原始答案

目前 2015 年,docker-machine 强制使用%USERPROFILE%
libmachine/mcnutils/utils.go#L17-L25

正如问题 499中所评论的:

同时,用户将如何指定.docker/machine/*文件的存储位置?

您可以通过--storage-path在命令行上指定或使用环境变量来指定MACHINE_STORAGE_PATH

(你可以看到它在PR 1941中实现)

Joost Den Boer在评论中指出

刚刚-s <path>在 Mac 上尝试了 ' ',它似乎工作正常。
可能不明显的是 path 选项位于 command 之前
运行 " docker-machine -s /Volumes/other/location' create --driver=virtualbox" 在另一个位置创建了一个新的 VirtualBox 映像。

于 2015-11-26T08:56:11.497 回答
23

只需使用 VirtualBox 图形界面重新定位文件disk.vmdk

在此处输入图像描述

  1. 将文件复制C:\Users\{myUsername}\.docker\machine\machines\default\disk.vmdk到另一个文件夹中,例如F:\docker-image\.
  2. 打开VirtualBox,选择defaultVM并打开Settings
  3. 打开Storage,选择当前disk.vmdk并释放它(或删除它)。
  4. 单击Choose Virtual Hard Disk File...并在其中搜索复制的文件F:\docker-image\
  5. 出现警告:VirtualBox 抱怨旧的 VM UID 然后转到菜单File,选择Virtual Media Manager...并释放或删除旧的disk.vmdk
  6. 重试4.,完成!
  7. 如果您的环境需要,则还对 boot2docker.iso、快照文件夹、视频捕获进行重定位。
于 2017-05-22T23:24:37.863 回答
14

在运行 docker 快速启动终端时输入这两个命令。

我想你的新位置是“D:\docker”,你的新机器名是“docker1”

export MACHINE_STORAGE_PATH=D:\\docker

docker-machine create --driver=virtualbox docker1

这应该在您的新位置创建具有指定名称的新机器。

于 2016-03-23T15:02:22.630 回答
8

我无法使 MACHINE_STORAGE_PATH 环境变量方法正常工作。首次初始化机器时,它一直抱怨缺少证书。仍然在 Windows 7 上,所以必须使用 docker-toolbox。

我通过以下方式解决了这个问题:

  1. 卸载 Docker Toolbox 并重启机器
  2. 打开管理员提示符(找到命令提示符,按住 shift,选择“以管理员身份运行”)
  3. 从 %USERPROFILE% 中删除 .docker:rmdir /S %USERPROFILE%.docker
  4. 在其他地方创建名为 .docker 的文件夹:mkdir a:\.docker
  5. mklink /J %USERPROFILE%.docker a:\.docker
  6. 关闭管理员命令提示符
  7. 重新安装 Docker 工具箱
  8. 使用 Docker 快速入门终端链接引导所有内容。
  9. Kitematic 现在也可以打开(尽管我必须在第一个错误时选择“使用虚拟盒子”选项。
于 2016-11-11T20:21:34.973 回答
3

我对上述任何解决方案都遇到了一些麻烦,但这对我有用:

  • 定义MACHINE_STORAGE_PATH环境变量以指向您想要的目录/文件夹。
  • 正常安装 docker-toolbox,如果这对你有用,那么很好,但对我来说,它仍然安装在.docker目录中。
  • .docker为了解决这个问题,我已经停止并从用户目录中删除了与文件夹一起创建的默认机器。
  • 编辑start.sh脚本并在顶部添加以下行:

例如

export MACHINE_STORAGE_PATH=D:\\Docker
  • 运行 Docker 快速入门终端快捷方式,它会在所需文件夹中重建默认机器
于 2016-10-20T10:30:48.487 回答
2

此答案适用于使用 Docker Toolbox 的人(Windows 10 Home Build 1909,您可以按照以下步骤安装 docker,然后更改位置。我没有添加任何图像)

安装 Docker Toolkit 并且 VM 必须在安装 docker toolkit 后使用 Admin Privileges 安装(*因为 Docker Toolkit 也安装了 VM,但它的版本较低,并且会与其他 iso 文件产生问题,你也可以取消选中,在这种情况下,*). 现在我们必须更改 disk.vmdk 的位置并更新 VM 中的新位置。

  • 从这里安装 Docker Toolbox 。按照提供的说明进行操作
  • 立即下载虚拟机​​ v6+
  • 以管理员身份安装虚拟机(通过右键单击并选择那里)
  • 转到您的VirtualBox.exe不是安装程序)所在的位置并右键单击它(您可以从桌面上创建的快捷方式中找到)
  • 转到属性 --> 兼容性 --> 更改所有用户的设置 --> 选择run this program as administrator
  • 现在关闭VM,如果它正在运行并运行Kitematic,如果它失败(它可能会)然后选择与VM相关的选项(只有2个选项)
  • 这次它会工作,现在关闭它

更改下载图像的位置

  • 打开您的虚拟机并关闭新运行的映像default(右键单击 -> 关闭 -> 关闭电源)
  • 复制粘贴你的disk.vmdk文件(对我来说它存在于C:\Users\Dell\.docker\machine\machines\default\disk.vmdk)到你想存储你下载的图像的地方(基本上disk.vmdk是当你使用 docker 时会增长的地方)
  • 现在我们还需要告诉虚拟机这个变化
  • 右键单击default图像并转到设置
  • 选择存储
  • 通过右键单击删除disk.vmdk附件 --> 删除(这是旧路径绑定的 disk.vmdk)
  • 点击file-->virtual media managerdisk.vmdk从这里删除(现在虚拟机不知道这样的 disk.vmdk 是否存在)
  • 右键单击default图像 --> 存储 --> add hard disk(此选项就在该 iso 图像上方)
  • 现在选择disk.vmdk你粘贴在某处的那个
  • 现在运行你的 docker cli 然后运行这个命令docker run hello-world
  • 如果没有错误,那么一切都完成了
  • 您可以通过检查这两个 vmdk 磁盘的大小来验证大小,然后拉取一些新映像



我从安装开始就写了一个描述性很强的答案,因为我确实遇到了一些问题,所以想让其他人非常直截了当。
如果您愿意,可以从 C 驱动器中删除您的 disk.vmdk 磁盘(较旧的磁盘)

于 2020-08-01T21:09:35.337 回答
1

创建名为 c:\programdata\docker\config\daemon.json 的文件,其内容如下,其中 e:\images 是您要存储所有图像的位置等。重新启动 docker。

{“图”:“e:\\图像”}

这就像一个魅力

参考 - https://forums.docker.com/t/where-are-images-stored/9794/11

于 2019-06-25T12:47:02.887 回答
0

对于 Windows 7:

  • 复制粘贴您的 disk.vmdk 文件(对我来说它位于 C:\Users\name.docker\machine\machines\default\disk.vmdk)到您要存储下载的图像的位置(基本上是 disk.vmdk是使用 docker 时会变大的东西)

  • 在 Virtualbox 中右键单击默认映像并转到设置选择存储通过右键单击删除 disk.vmdk 附件-> 删除

  • 单击文件 --> 虚拟媒体管理器并从此处删除 disk.vmdk

  • 右键单击默认映像 --> 存储 --> 添加硬盘(此选项就在该 iso 映像上方)现在选择您粘贴到某处的 disk.vmdk

  • 现在更改 config.json 中的此路径(C:\Users\name.docker\machine\machines\default\config.json) 用这个新路径更改存储路径,您将硬盘的位置(“StorePath”: "F:\docker-image")

节省。

于 2021-01-03T18:20:28.823 回答
0

我使用 Windows 10 和 Docker 桌面(社区)版本 2.0.0.0,我想将 vhdx 文件移动到另一个驱动器。

右键单击 Docker 桌面 -> 设置 在此处输入图像描述 ,然后 Docker 桌面 UI 将打开转到高级 -> 磁盘映像位置 在此处输入图像描述 ,只需将路径更改为新目标,整个过程对我来说顺利而快速 - 它会自动从原始路径复制 vhdx 文件到新路径重新启动 docker 并按预期工作  

于 2020-01-19T22:01:45.883 回答
0

截至最新版本,这些答案已过时。该位置可在“设置”用户界面中配置。

https://github.com/docker/for-win/issues/333

于 2017-04-26T04:23:21.803 回答
0

我发现很多这些答案都没有数据,至少它们在我的环境中不起作用:win10 PRO,docker desktop community 2.0.0.3。最后,我通过这种方法解决了这个问题:

  1. 卸载泊坞窗

  2. 打开 Hyper-V 管理器(按 WIN 键,然后输入“Hyper”)

  3. 更改Hyper-V设置中的默认虚拟硬盘位置(不在 VM 设置中)并确认

  4. 安装泊坞窗

  5. 在 docker 设置的高级选项中检查磁盘映像位置

于 2019-04-08T09:01:18.740 回答