更改 Docker 机器位置 - Windows
Posted
技术标签:
【中文标题】更改 Docker 机器位置 - Windows【英文标题】:Change Docker machine location - Windows 【发布时间】:2016-02-29 05:20:54 【问题描述】:我在 Windows 7 上使用 docker 工具箱来运行 docker。 (码头工人版本 1.9.1)
事实证明,docker 机器在 C:\Users\username\.docker\machine\machines\default 处创建其 VM。当我提交图像时,此位置的 VM 大小会膨胀。由于是 Windows,我负担不起 C 盘上的奢华空间。
有什么方法可以更改默认机器的位置吗?
【问题讨论】:
参考this answer 【参考方案1】:这对我来说在 Windows 7 上非常有效:
-
将 MACHINE_STORAGE_PATH 环境变量设置为您要用于 Docker 机器/VM、缓存等的位置的根目录。
安装 Docker 工具箱
运行 Docker 快速入门终端
Docker Toolbox 现在将在 MACHINE_STORAGE_PATH 指向的位置创建所有文件。
更新:
请注意,使用新存储路径创建新 VM 并不理想,因为 Docker 快速入门终端脚本似乎不适用于未命名为“default”的任何内容。
如果您已经在 C: 驱动器中安装了一个 VM,那么最简单的做法是转到 Oracle VirtualBox 并删除“默认”VM,卸载 Docker Toolbox,删除 C:\Users\.docker\,然后按照上面的3个步骤。
注意:可能不需要卸载和重新安装 Docker Toolbox。但是没有它我还没有测试过。
更新
若还要移动 Docker 证书,请将 DOCKER_CERT_PATH
变量设置为指向新驱动器的路径。感谢@Nutle 的提示。
【讨论】:
我使用的是 Windows 10,这种方式也适用于我 还要注意,docker-machine 假定这是“cache”、“certs”和“machines”目录的父目录。我个人首先假设如果我将 my-home-directory 设置为 MACHINE_STORAGE_PATH,那么 docker-machine 将在下面创建我熟悉的 .docker/machine 目录结构。此情况并非如此。因此,为了获得等效的行为,我必须将 MACHINE_STORAGE_PATH 设置为 my-home-directory\.docker\machine. 值得注意的是,可能需要额外设置证书的环境变量 --DOCKER_CERT_PATH
。就我而言(w7 x64),将其设置为 my_custom_machine_storage_path_link\certs
就足够了。
我通过简单地将整个 .docker 文件夹复制到 D:\DockerEnv 并在不卸载 docker / VM 的情况下适当地更新 MACHINE_STORAGE_PATH 来使用另一个目录更新了我的 docker 和 VM 对于实际启动,我需要更新 default.vbox,配置来自D:\DockerEnv\.docker\machine\machines\default
的.json 也来自USER_HOME.VirtualBox
的VirtualBox.xml
谢谢。我可以确认不需要卸载。只需删除默认 vm docker-machine rm default
并在设置环境变量后创建一个新的。【参考方案2】:
您可以将.docker
目录移动到另一个驱动器并创建一个连接点。
请注意,常规快捷方式不起作用。
例如:
将.docker
目录从C:\Users\username
移动到D:\
然后运行:
C:\Users\username>mklink /j .docker D:\.docker
Junction created for .docker <<===>> D:\.docker
【讨论】:
+1 谢谢 - 实际上在我的 Windows 10(启用开发者模式的家庭版)上使用mklink /D
也有效 - 我在找到这个答案之前尝试过。
优雅的解决方案
同时移动机器存储路径和证书密钥路径是最省力的。并与此路径上的任何其他潜在行为兼容。我对这个答案投了三遍:)
我认为它是最简单的选择,至少是 docker 在带有 WSL 的 windows 上,尝试了像“data-root”这样的配置,但它没有用。【参考方案3】:
自 2015 年以来,现在(2017 年 6 月)Hyper-V,允许您定义您想要的VHDX
files:
见Docker for Windows 1.13.0, 2017-01-19 (stable):
可以移动包含图像和非主机安装卷的 VHDX 文件(使用 UI 中的“高级”选项卡)
这将修改%APPDATA%\Docker\settings.json
一行:
"MobyVhdPathOverride":"C:\\Users\\Public\\Documents\\Hyper-V\\New folder\\MobyLinuxVM.vhdx"
见this thread for more。
原答案
目前 2015 年,docker-machine 强制使用%USERPROFILE%
:
见libmachine/mcnutils/utils.go#L17-L25
正如issue 499中评论的那样:
与此同时,用户将如何指定
.docker/machine/*
文件的存储位置?您可以通过在命令行中指定
--storage-path
或使用环境变量MACHINE_STORAGE_PATH
。
(你可以看到它在PR 1941中实现)
Joost Den Boer 指出in the comments
刚刚在 Mac 上尝试了“
-s <path>
”,它似乎工作正常。可能不明显的是路径选项位于命令之前。 运行“docker-machine -s /Volumes/other/location' create --driver=virtualbox
”在另一个位置创建了一个新的 VirtualBox 映像。
【讨论】:
@shrivb 尝试设置MACHINE_STORAGE_PATH
环境变量(而不是使用--storage-path
选项),看看是否会有所作为。
在 bash 中,这将是 export MACHINE_STORAGE_PATH=F:\user\DevOps\VM\machine
:没有空格,没有引号。但请在常规 CMD 会话中尝试:set MACHINE_STORAGE_PATH=F:\user\DevOps\VM\machine
: 再次,没有空格,没有引号。
刚刚在 Mac 上尝试了“-s 只需使用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\
中搜索复制的文件
出现警告:VirtualBox 抱怨旧的 VM UID 然后转到菜单File
,选择Virtual Media Manager...
并释放或删除旧的disk.vmdk
重试4.
,完成!
如果您的环境需要,也可以为 boot2docker.iso、快照文件夹、视频捕获执行重定位。
【讨论】:
值得一提的是,只有在您的虚拟机未运行时,您才能执行以下步骤。 1) docker-machine.exe 停止默认值 2) 将 virtualbox UI 中的 disk.vmdk 移动到新位置。 (文件/管理磁盘/移动) 3) docker-machine.exe 启动默认 在调试其他解决方案数小时后,我尝试了这个解决方案,并在 5 分钟内让它工作......【参考方案5】:在运行docker快速启动终端时输入这两个命令。
我想你的新位置是“D:\docker”,你的新机器名是“docker1”
export MACHINE_STORAGE_PATH=D:\\docker
docker-machine create --driver=virtualbox docker1
这应该会在您的新位置创建一个具有指定名称的新机器。
【讨论】:
【参考方案6】:我无法使 MACHINE_STORAGE_PATH 环境变量方法工作。首次初始化机器时,它一直抱怨缺少证书。仍然在 Windows 7 上,所以必须使用 docker-toolbox。
我通过以下方式解决了这个问题:
-
卸载 Docker Toolbox 并重启机器
打开管理员提示符(找到命令提示符,按住 shift,选择“以管理员身份运行”)
从 %USERPROFILE% 中删除 .docker:rmdir /S %USERPROFILE%.docker
在别处创建名为 .docker 的文件夹:mkdir a:\.docker
mklink /J %USERPROFILE%.docker a:\.docker
关闭管理员命令提示符
重新安装 Docker 工具箱
使用 Docker 快速入门终端链接引导所有内容。
Kitematic 现在也可以打开了(尽管我必须在第一个错误时选择“使用虚拟盒子”选项。
【讨论】:
【参考方案7】:我对上述任何解决方案都有点麻烦,但这对我有用:
定义MACHINE_STORAGE_PATH
环境变量指向你想要的
目录/文件夹。
像往常一样安装 docker-toolbox,如果这对你有用,那很好,但对我来说,它仍然安装在 .docker
目录中。
为了解决这个问题,我已经停止并从用户目录中删除了与 .docker
文件夹一起创建的默认计算机。
编辑了start.sh
脚本并在顶部添加了一行:
例如
export MACHINE_STORAGE_PATH=D:\\Docker
运行 Docker 快速启动终端快捷方式,它会在所需文件夹中重建默认机器
【讨论】:
【参考方案8】:此答案适用于使用 Docker Toolbox 的人(Windows 10 Home Build 1909,您可以按照以下步骤安装 docker,然后更改位置。我没有添加任何图像)
安装 Docker Toolkit 和 VM 必须在安装 docker toolkit 后使用 Admin Privileges 安装(*因为 Docker Toolkit 也安装了 VM,但它的版本较低,并且会与其他 iso 文件产生问题,u在这种情况下,也可以取消选中 *)。现在我们必须更改 disk.vmdk 的位置并更新 VM 中的新位置。
从here 安装 Docker Toolbox。按照提供的说明进行操作 立即下载虚拟机 v6+ 以管理员身份安装虚拟机(通过右键单击并选择那里) 转到您的VirtualBox.exe
(不是安装程序)所在的位置并右键单击它(您可以从桌面上创建的快捷方式中找到)
转到属性 --> 兼容性 --> 更改所有用户的设置 --> 选择 run this program as administrator
现在关闭正在运行的 VM 并运行 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
(现在VM不知道这样的disk.vmdk东西是否存在)
右键单击default
图像--> 存储--> add hard disk
(此选项就在该iso 图像上方)
现在选择您粘贴在某处的disk.vmdk
现在运行你的 docker cli 然后运行这个命令docker run hello-world
如果没有错误,那么一切都完成了
您可以通过检查这两个 vmdk 磁盘的大小然后拉取一些新映像来验证大小
我从安装开始就写了一个描述性很强的答案,因为我确实遇到了一些问题,所以想让其他人非常直接。 如果您愿意,可以从 C 盘中删除您的 disk.vmdk 磁盘(较旧的磁盘)
【讨论】:
【参考方案9】:创建名为 c:\programdata\docker\config\daemon.json 的文件,其内容如下,其中 e:\images 是您要存储所有图像等的位置。重新启动 docker。
“图形”:“e:\\图像”
这很有魅力
参考 - https://forums.docker.com/t/where-are-images-stored/9794/11
【讨论】:
【参考方案10】:截至最新版本,这些答案已过时。该位置可在“设置”用户界面中配置。
https://github.com/docker/for-win/issues/333
【讨论】:
请注意,某些操作系统不支持 Docker Desktop for Windows,包括 Windows 10 Home。所以这些答案仍然有用。 没有 Hyper-v 的 Windows(我可以命名为 Windows 7 和 Windows 10 Home)仍然可以使用这些答案。【参考方案11】:我发现很多这些答案都没有数据,至少它们在我的环境中不起作用:win10 PRO,docker desktop community 2.0.0.3。最后,我通过这种方法解决了这个问题:
卸载 docker
打开 Hyper-V 管理器(按 WIN 键,然后输入“Hyper”)
在 Hyper-V 设置(不在 VM 设置上)更改默认的虚拟硬盘位置并确认
安装 docker
在 docker 设置的高级选项中检查磁盘映像位置
【讨论】:
在 Windows 10 Pro 上,docker desktop 和 docker toolbox 默认使用 hyper-v 作为 VM 驱动程序。这些答案中的大多数是针对带有 VirutalBox 驱动程序的 docker 工具箱,在没有 hyper-v 的 Windows 上。【参考方案12】:我使用 Windows 10 和 Docker 桌面(社区)版本 2.0.0.0,我想将 vhdx 文件移动到另一个驱动器。
在 Docker 桌面上单击鼠标右键 -> 设置 然后 Docker 桌面 UI 将打开转到 Advance -> Disk image location 只需将路径更改为新目的地,整个过程对我来说既顺畅又快速 - 它会自动将 vhdx 文件从原始路径复制到新路径重新启动 docker 并按预期工作
【讨论】:
【参考方案13】:对于 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”)
保存。
【讨论】:
以上是关于更改 Docker 机器位置 - Windows的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 10 Pro 上更改 Docker 本机映像位置
最新版docker安装,更改docker安装位置,镜像数据保存路径,配置镜像加速器
如何更改“docker create volume”命令的默认位置?
在 Windows 10 Home 上使用 WSL2 上的 Docker Desktop 时,如何更改 docker 映像的位置?