更改Docker机器位置 - Windows

shr*_*ivb 59 windows docker docker-machine docker-toolbox

我在Windows 7上使用docker工具箱来运行docker.(docker version 1.9.1)

事实证明,docker机器在C:\ Users\username\.docker\machine\machines\default创建其VM.当我提交图像时,此位置的VM大小会膨胀.自从它的Windows,无法承受C盘上的豪华空间.

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

Raj*_*ani 52

这对我在Windows 7上的效果非常好:

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

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

更新:

请注意,使用新存储路径创建新VM并不理想,因为Docker Quickstart Terminal脚本似乎不适用于任何未命名为"default"的内容.

如果你已经在C:盘中安装了一个虚拟机,那么最简单的方法就是转到Oracle VirtualBox并删除"默认"虚拟机,卸载Docker Toolbox,删除C:\ Users\<用户名>. docker \,然后按照上面的3个步骤操作.

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

更新

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

  • 我正在使用Windows 10,这种方式也适用于我 (5认同)
  • 我通过简单地将整个.docker文件夹复制到D:\ DockerEnv并适当地更新了MACHINE_STORAGE_PATH而无需卸载docker / VM来更新了docker&VM的另一个目录。 \ .docker \ machine \ machines \ default`也是来自{USER_HOME} .VirtualBox`的VirtualBox.xml。 (2认同)

小智 33

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

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

例如:

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

并运行:

C:\Users\username>mklink /j .docker D:\.docker
Junction created for .docker <<===>> D:\.docker
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 28

自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"
Run Code Online (Sandbox Code Playgroud)

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上尝试' ,它似乎工作正常.
可能不太明显的是路径选项在命令之前.
运行" docker-machine -s /Volumes/other/location' create --driver=virtualbox"在另一个位置创建了一个新的VirtualBox图像.

  • 在bash中,这将是`export MACHINE_STORAGE_PATH = F:\ user\DevOps\VM\machine`:没有空格,没有引号.但是在常规的CMD会话中尝试:`设置MACHINE_STORAGE_PATH = F:\ user\DevOps\VM\machine`:再次,没有空格,没有引号. (4认同)
  • 即时更新:我另外导出了MACHINE_STORAGE_PATH,现在可以通过"docker-machine ls"看到我的机器了.不清楚原始-s标志是否必要. (4认同)

ron*_*190 18

只需使用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执行重定位.

  • 值得一提的是,只有当您的 VM 未运行时,您才能执行以下步骤。 (2认同)
  • 1) docker-machine.exe 停止默认 2) 将 virtualbox UI 中的 disk.vmdk 移动到新位置。(文件/管理磁盘/移动) 3) docker-machine.exe 启动默认 (2认同)

Pro*_*s08 13

运行docker quick start terminal时,请输入以下两个命令.

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

export MACHINE_STORAGE_PATH=D:\\docker

docker-machine create --driver=virtualbox docker1
Run Code Online (Sandbox Code Playgroud)

这应该会在新位置创建一个具有指定名称的新计算机.


pau*_*ote 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. 关闭Admin命令提示符
  7. 重新安装Docker Toolbox
  8. 使用Docker Quickstart Terminal链接引导所有内容.
  9. Kitematic现在也可以打开(虽然我必须在第一次出错时选择"使用虚拟盒子"选项.