我在 Windows 7 上使用 docker 工具箱来运行 docker。(码头工人版本 1.9.1)
事实证明,docker 机器在 C:\Users\username\.docker\machine\machines\default 中创建其 VM。当我提交图像时,此位置的 VM 大小会膨胀。由于是 Windows,我负担不起 C 盘上的奢华空间。
有什么办法可以更改默认机器的位置?
我在 Windows 7 上使用 docker 工具箱来运行 docker。(码头工人版本 1.9.1)
事实证明,docker 机器在 C:\Users\username\.docker\machine\machines\default 中创建其 VM。当我提交图像时,此位置的 VM 大小会膨胀。由于是 Windows,我负担不起 C 盘上的奢华空间。
有什么办法可以更改默认机器的位置?
这对我在 Windows 7 上非常有效:
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 的提示。
您可以将.docker
目录移动到另一个驱动器并创建一个连接点。
请注意,常规快捷方式不起作用。
例如:
将.docker
目录从移动C:\Users\username
到D:\
并运行:
C:\Users\username>mklink /j .docker D:\.docker
Junction created for .docker <<===>> D:\.docker
自 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"
有关更多信息,请参阅此线程。
原始答案
目前 2015 年,docker-machine 强制使用%USERPROFILE%
:
见libmachine/mcnutils/utils.go#L17-L25
正如问题 499中所评论的:
同时,用户将如何指定
.docker/machine/*
文件的存储位置?您可以通过
--storage-path
在命令行上指定或使用环境变量来指定MACHINE_STORAGE_PATH
。
(你可以看到它在PR 1941中实现)
刚刚
-s <path>
在 Mac 上尝试了 ' ',它似乎工作正常。
可能不明显的是 path 选项位于 command 之前。
运行 "docker-machine -s /Volumes/other/location' create --driver=virtualbox
" 在另一个位置创建了一个新的 VirtualBox 映像。
只需使用 VirtualBox 图形界面重新定位文件disk.vmdk
:
C:\Users\{myUsername}\.docker\machine\machines\default\disk.vmdk
到另一个文件夹中,例如F:\docker-image\
.VirtualBox
,选择default
VM并打开Settings
。Storage
,选择当前disk.vmdk
并释放它(或删除它)。Choose Virtual Hard Disk File...
并在其中搜索复制的文件F:\docker-image\
File
,选择Virtual Media Manager...
并释放或删除旧的disk.vmdk
4.
,完成!在运行 docker 快速启动终端时输入这两个命令。
我想你的新位置是“D:\docker”,你的新机器名是“docker1”
export MACHINE_STORAGE_PATH=D:\\docker
docker-machine create --driver=virtualbox docker1
这应该在您的新位置创建具有指定名称的新机器。
我无法使 MACHINE_STORAGE_PATH 环境变量方法正常工作。首次初始化机器时,它一直抱怨缺少证书。仍然在 Windows 7 上,所以必须使用 docker-toolbox。
我通过以下方式解决了这个问题:
我对上述任何解决方案都遇到了一些麻烦,但这对我有用:
MACHINE_STORAGE_PATH
环境变量以指向您想要的目录/文件夹。.docker
目录中。.docker
为了解决这个问题,我已经停止并从用户目录中删除了与文件夹一起创建的默认机器。start.sh
脚本并在顶部添加以下行:例如
export MACHINE_STORAGE_PATH=D:\\Docker
安装 Docker Toolkit 并且 VM 必须在安装 docker toolkit 后使用 Admin Privileges 安装(*因为 Docker Toolkit 也安装了 VM,但它的版本较低,并且会与其他 iso 文件产生问题,你也可以取消选中,在这种情况下,*). 现在我们必须更改 disk.vmdk 的位置并更新 VM 中的新位置。
VirtualBox.exe
(不是安装程序)所在的位置并右键单击它(您可以从桌面上创建的快捷方式中找到)run this program as administrator
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 manager
并disk.vmdk
从这里删除(现在虚拟机不知道这样的 disk.vmdk 是否存在)default
图像 --> 存储 --> add hard disk
(此选项就在该 iso 图像上方)disk.vmdk
你粘贴在某处的那个docker run hello-world
我从安装开始就写了一个描述性很强的答案,因为我确实遇到了一些问题,所以想让其他人非常直截了当。
如果您愿意,可以从 C 驱动器中删除您的 disk.vmdk 磁盘(较旧的磁盘)
创建名为 c:\programdata\docker\config\daemon.json 的文件,其内容如下,其中 e:\images 是您要存储所有图像的位置等。重新启动 docker。
{“图”:“e:\\图像”}
这就像一个魅力
参考 - https://forums.docker.com/t/where-are-images-stored/9794/11
对于 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")
节省。
截至最新版本,这些答案已过时。该位置可在“设置”用户界面中配置。
我发现很多这些答案都没有数据,至少它们在我的环境中不起作用:win10 PRO,docker desktop community 2.0.0.3。最后,我通过这种方法解决了这个问题:
卸载泊坞窗
打开 Hyper-V 管理器(按 WIN 键,然后输入“Hyper”)
更改Hyper-V设置中的默认虚拟硬盘位置(不在 VM 设置中)并确认
安装泊坞窗
在 docker 设置的高级选项中检查磁盘映像位置