更改Docker机器位置 – Windows

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

事实certificate,docker机在C:\ Users \ username \ .docker \ machine \ machines \ default下创build了它的虚拟机。 而当我提交的图像在这个位置虚拟机的大小膨胀起来。 自Windows以来,无法承受C盘空间的奢侈。

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

这是在Windows 7上完美的工作:

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

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

更新:

请注意,使用新存储路径创建新虚拟机并不理想,因为Docker快速入门终端脚本似乎不适用于任何未命名为“default”的内容。

如果你已经有一个虚拟机在C:盘,那么最简单的做法是去Oracle VirtualBox,删除“默认”虚拟机,卸载Docker Toolbox,删除C:\ Users \ <username>。 docker \,然后按照上面的3个步骤。

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

更新

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

自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年,码头机强制使用%USERPROFILE%
参见libmachine/mcnutils/utils.go#L17-L25

如问题499中所评论的:

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

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

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

Joost Den Boer 在评论中指出

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

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

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

 export MACHINE_STORAGE_PATH=D:\\docker docker-machine create --driver=virtualbox docker1 

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

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

在这里输入图像说明

  1. 复制文件C:\Users\{myUsername}\.docker\machine\machines\default\disk.vmdk到另一个文件夹中,比如F:\docker-image\ C:\Users\{myUsername}\.docker\machine\machines\default\disk.vmdk F:\docker-image\
  2. 打开VirtualBox ,选择default虚拟机并打开Settings
  3. 打开Storage ,选择当前的disk.vmdk并释放它(或删除它)。
  4. 点击Choose Virtual Hard Disk File...并搜索复制的文件在F:\docker-image\
  5. 发生警告:VirtualBox投诉旧的虚拟机UID,然后进入菜单File ,选择Virtual Media Manager...并释放或删除旧的disk.vmdk
  6. 重试4. ,完成了!
  7. 如果您的环境需要,则还要为boot2docker.iso,快照文件夹,视频捕获进行重定位。

我无法获得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快速入门终端链接引导一切。
  9. Kitematic现在也可以打开(虽然我不得不在第一个错误选择“使用虚拟框”选项。

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

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

例如:

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

并运行:

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

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

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

例如

 export MACHINE_STORAGE_PATH=D:\\Docker 
  • 运行Docker快速入门终端快捷方式,它重建所需文件夹内的默认机器

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

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