我想将我的 Docker 容器和镜像从 C: 移动到其他地方。所有容器/镜像都是 Windows 容器/镜像。
我已使用 data-root
配置选项更改了 Docker 数据文件位置,重新启动了守护程序和桌面客户端,并使用 docker info
验证了数据根位置。
问题是,现有的容器和镜像都没有移动到新位置。只是桌面客户端的配置文件。桌面客户端似乎没有提供任何方法(强制/说服)将数据移动到新位置。
尝试通过手动将 C:\ProgramData\Docker
内容复制到新位置来解决该问题,但在复制特殊系统文件(例如 bootmgr
)时,迟早一切都会失败code>,windowsfilter
中的图像(在提升的 PowerShell 中运行 robocopy
或在资源管理器中复制,并不重要)。
有什么办法可以解决这个问题,在不破坏所有内容的情况下移动现有图像和容器吗?我没有可以使用的 Linux 机器来挂载 NTFS 卷并在那里进行复制。
最佳答案
我发现设置data-root
会导致在所需驱动器上创建新镜像,但现有镜像将继续从系统驱动器(C:\)。我什至尝试删除 C:\驱动器上的 windowsfilter 文件夹,但运行容器时,图像被重新下载到 C:\驱动器,而不是配置的数据根位置。
对我有用的是从troubleshooting menu执行恢复出厂设置。 (docker桌面中的是该菜单的快捷方式)。这将清理系统驱动器中的 windowsfilter 文件夹 - 但是我不得不运行工厂重置两次,因为第一次失败了。
重置完成后,进入Settings->Docker Engine
并在另一个驱动器上添加data-root
条目文件夹:
{
"registry-mirrors": [],
"insecure-registries": [],
"debug": false,
"experimental": false, <-- remember to add a comma here
"data-root": "E:\\dockerdata"
}
然后单击应用并重新启动
关于windows - Windows 10 上的 Docker : How to move existing containers & images to new location?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60001839/