我正在Windows 7上使用docker工具箱运行docker。(Docker版本1.9.1)
事实证明,docker计算机在C:\ Users \ username \ .docker \ machine \ machines \ default下创建其VM。当我提交映像时,此位置处的VM大小膨胀。由于它是Windows,因此我无法承受C驱动器上的豪华空间。
有什么方法可以更改默认计算机的位置?
Answers:
这是在Windows 7上最适合我的功能:
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的提示。
DOCKER_CERT_PATH
。就我而言(w7 x64)足以将其设置为{my_custom_machine_storage_path_link}\certs
。
D:\DockerEnv\.docker\machine\machines\default
VirtualBox.xml也更新default.vbox,config.json{USER_HOME}.VirtualBox
docker-machine rm default
虚拟机并在设置环境变量后创建一个新的虚拟机。
您可以将.docker
目录移动到另一个驱动器并为其创建连接点。
请注意,常规快捷方式将不起作用。
例如:
将.docker
目录从C:\Users\username
移至D:\
并运行:
C:\Users\username>mklink /j .docker D:\.docker
Junction created for .docker <<===>> D:\.docker
mklink /D
也可以使用-在找到此答案之前,我已经尝试过。
自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"
原始答案
当前,2015年,docker-machine强制使用%USERPROFILE%
:
请参阅libmachine/mcnutils/utils.go#L17-L25
如第499期中所述:
同时,用户将如何指定
.docker/machine/*
文件的存储位置?您可以
--storage-path
在命令行上指定或使用环境变量MACHINE_STORAGE_PATH
。
(您可以看到它在PR 1941中实现)
刚
-s <path>
在Mac上尝试过“ ”,它似乎可以正常运行。
可能不明显的是path选项位于命令之前。
运行“docker-machine -s /Volumes/other/location' create --driver=virtualbox
”会在其他位置创建一个新的VirtualBox映像。
MACHINE_STORAGE_PATH
环境变量(而不是使用该 --storage-path
选项),以查看是否有所作为。
export MACHINE_STORAGE_PATH=F:\user\DevOps\VM\machine
:没有空格,没有引号。但是,请在常规CMD会话中尝试set MACHINE_STORAGE_PATH=F:\user\DevOps\VM\machine
::再次,没有空格,没有引号。
只需使用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.
,已完成!我无法使用MACHINE_STORAGE_PATH环境变量方法。首次初始化计算机时,它一直抱怨缺少证书。仍然在Windows 7上,因此必须使用docker-toolbox。
我通过以下方法解决了这个问题:
上面的任何解决方案我都遇到了麻烦,但这对我有用:
MACHINE_STORAGE_PATH
环境变量以指向所需的目录/文件夹。.docker
目录中。.docker
从Users目录中删除了与文件夹一起创建的默认计算机。start.sh
脚本并在顶部添加以下行:例如
export MACHINE_STORAGE_PATH=D:\\Docker
安装Docker Toolkit后,必须在安装Docker Toolkit之后以管理员权限安装VM(*因为Docker Toolkit还安装了VM,但它的版本较低,并且导致其他iso文件出现问题,在这种情况下,您也可以取消选中*)。现在,我们必须更改disk.vmdk的位置并更新VM中的新位置。
VirtualBox.exe
(不是安装程序)的位置,然后右键单击它(可以从在桌面上创建的快捷方式中找到)run this program as administrator
Kitematic
,如果失败(可能会),则选择与虚拟机相关的选项(只有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
从此处删除(现在VM不知道是否存在这样的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。
{“ graph”:“ e:\\ images”}
像魅力一样运作
参考-https: //forums.docker.com/t/where-are-images-stored/9794/11
从最新版本开始,这些答案已过期。该位置可在“设置”用户界面中配置。
我发现很多这样的答案都没有数据,至少它们在我的环境中不起作用:win10 PRO,docker桌面社区2.0.0.3。最后,我通过这种方法解决了这个问题:
卸载docker
打开Hyper-V管理器(按WIN键,然后输入“ Hyper”)
在Hyper-V设置中更改默认虚拟硬盘位置(不在VM设置中),然后确认
安装码头工人
在docker settings的高级选项中检查磁盘映像位置
对于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”)
保存。