更改Docker机器位置-Windows


73

我正在Windows 7上使用docker工具箱运行docker。(Docker版本1.9.1)

事实证明,docker计算机在C:\ Users \ username \ .docker \ machine \ machines \ default下创建其VM。当我提交映像时,此位置处的VM大小膨胀。由于它是Windows,因此我无法承受C驱动器上的豪华空间。

有什么方法可以更改默认计算机的位置?

Answers:


60

这是在Windows 7上最适合我的功能:

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

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

更新:

请注意,使用新的存储路径创建新的VM是不理想的,因为Docker Quickstart Terminal脚本似乎不适用于任何未命名为“ default”的东西。

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

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

更新资料

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


7
我正在使用Windows 10,因此也可以使用这种方式
Ya Basha

1
还要注意,docker-machine假定这是“缓存”,“证书”和“计算机”目录的父目录。我个人首先假设,如果将{my-home-directory}设置为MACHINE_STORAGE_PATH,则docker-machine将创建我在下面熟悉的.docker / machine目录结构。此情况并非如此。因此,要获得相同的行为,我必须将MACHINE_STORAGE_PATH设置为{my-home-directory} \。docker \ machine。
jzheaux

1
值得一提的是,可能有必要额外设置证书的环境变量DOCKER_CERT_PATH。就我而言(w7 x64)足以将其设置为{my_custom_machine_storage_path_link}\certs
Nutle

2
我通过简单地将整个.docker文件夹复制到D:\ DockerEnv并适当地更新了MACHINE_STORAGE_PATH而不用卸载docker / VM的方式将我的docker&VM更新到另一个目录,为了实际启动,我需要从以下目录中的D:\DockerEnv\.docker\machine\machines\default VirtualBox.xml也更新default.vbox,config.json{USER_HOME}.VirtualBox
Nikhil

1
谢谢。我可以确认不需要卸载。只需删除默认docker-machine rm default虚拟机并在设置环境变量后创建一个新的虚拟机。
德米特里·斯莫若克

53

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

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

例如:

.docker目录从C:\Users\username移至D:\

并运行:

C:\Users\username>mklink /j .docker D:\.docker
Junction created for .docker <<===>> D:\.docker

1
+1谢谢-实际上在我的Windows 10(启用了开发人员模式的家庭版)上mklink /D也可以使用-在找到此答案之前,我已经尝试过。
塞巴斯蒂安

1
优雅的解决方案
Mohsen Afshin,

移动机器存储路径和证书密钥路径的工作最少。并与此路径上的任何其他潜在行为兼容。我对这个答案
投票了

我认为它是使用WSL的Windows上最少的docker的最简单选项,尝试了像“ data-root”这样的配置,但没有用。
Abdul Mohsin

31

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

请参阅适用于Windows的Docker 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的书斋波尔指出在评论

-s <path>在Mac上尝试过“ ”,它似乎可以正常运行。
可能不明显的是path选项位于命令之前
运行“ docker-machine -s /Volumes/other/location' create --driver=virtualbox”会在其他位置创建一个新的VirtualBox映像。


1
@shrivb尝试设置MACHINE_STORAGE_PATH环境变量(而不是使用该 --storage-path选项),以查看是否有所作为。
VonC 2015年

4
用bash表示export MACHINE_STORAGE_PATH=F:\user\DevOps\VM\machine:没有空格,没有引号。但是,请在常规CMD会话中尝试set MACHINE_STORAGE_PATH=F:\user\DevOps\VM\machine::再次,没有空格,没有引号。
VonC

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

1
在Windows上运行,-s标志确实按预期在指定路径中创建了新计算机。但是,之后docker似乎对此一无所知,“ docker-machine ls”没有列出它,我也无法“ docker-machine start”它(“主机不存在”错误)。运行Docker Toolbox版本1.9.1i
拒绝

4
即时更新:我另外导出了MACHINE_STORAGE_PATH,现在可以通过“ docker-machine ls”看到我的机器。不清楚是否需要原始的-s标志。
拒绝

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,Snapshot Folder,Video Capture进行重定位。

2
值得一提的是,仅当您的VM未运行时,您才可以执行以下步骤。
zygimantus

2
1)docker-machine.exe停止默认设置2)将virtualbox UI中的disk.vmdk移动到新位置。(文件/管理磁盘/移动)3)
docker

1
经过数小时的调试其他解决方案,我尝试了此解决方案,并在5分钟内完成了工作...
Isaac Pak

14

在运行docker quick start terminal时放置这两个命令。

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

export MACHINE_STORAGE_PATH=D:\\docker

docker-machine create --driver=virtualbox docker1

这将在您的新位置创建一个具有指定名称的新计算机。


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 Toolbox
  8. 使用Docker Quickstart Terminal链接来引导所有内容。
  9. Kitematic现在也可以打开(尽管我必须在出现第一个错误时选择“使用虚拟盒”选项。

3

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

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

例如

export MACHINE_STORAGE_PATH=D:\\Docker
  • 运行Docker Quickstart Terminal快捷方式,该快捷方式在所需文件夹内重建了默认计算机

2

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

安装Docker Toolkit后,必须在安装Docker Toolkit之后以管理员权限安装VM(*因为Docker Toolkit还安装了VM,但它的版本较低,并且导致其他iso文件出现问题,在这种情况下,您也可以取消选中*)。现在,我们必须更改disk.vmdk的位置并更新VM中的新位置。

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

更改下载图像的位置

  • 打开您的VM并关闭新运行的映像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从此处删除(现在VM不知道是否存在这样的disk.vmdk东西)
  • 右键单击default图像->存储-> add hard disk(此选项位于该iso图像上方)
  • 现在选择disk.vmdk您已粘贴到某处
  • 现在运行您的docker cli,然后运行此命令 docker run hello-world
  • 如果没有错误,那就一切都完成了
  • 您可以通过检查这两个vmdk磁盘的大小,然后提取一些新映像来验证大小



从安装开始,我已经写了一个非常有描述性的答案,因为我确实遇到了一些问题,因此想让其他问题变得非常简单。
您可以从C驱动器中删除disk.vmdk磁盘(较旧的磁盘),如果要




0

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

  1. 卸载docker

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

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

  4. 安装码头工人

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


1
在Windows 10 Pro上,默认情况下docker桌面和docker toolbox将hyper-v作为VM驱动程序。在没有Hyper-v的Windows上,大多数答案都是针对带有VirutalBox驱动程序的docker工具箱的。
bigdataolddriver

0

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

右键单击Docker Desktop->设置, 在此处输入图片说明 然后Docker Desktop UI将打开,转到高级->磁盘映像位置, 在此处输入图片说明 只需将路径更改为新目标即可,整个过程对我而言是平稳而快速的-它会自动从原始路径复制vhdx文件到新路径重新启动docker并按预期完成所有工作  


0

对于Windows 7:

  • 复制将disk.vmdk文件(对我来说,它存在于C:\ Users \ name.docker \ machine \ machines \ default \ disk.vmdk)粘贴到要存储要下载的映像的位置(基本上是disk.vmdk)当您使用docker时大小会增加)

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

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

  • 右键单击默认映像->存储->添加硬盘(此选项位于该iso映像的上方)现在选择已粘贴到该磁盘的vmdk。

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

保存。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.