windows - Windows 10 上的 Docker : How to move existing containers & images to new location?

标签 windows docker access-denied docker-container docker-image

我想将我的 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桌面中的Bug icon是该菜单的快捷方式)。这将清理系统驱动器中的 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/

相关文章:

linux - 如何在不停止流媒体服务器的情况下热重载 NATS 流媒体服务器?

c++ - 获取 MSI 产品属性

windows - msys2:尽管 (MSYS2_PATH_TYPE = inherit) 仍未找到 Windows 程序

oracle - 如何在Docker中连接到外部Oracle数据库

docker - 有没有一种好的和安全的方法来允许非 root 用户启动 docker 镜像?

amazon-web-services - 即使使用存储桶和/或用户策略,对 AWS s3 存储桶的访问也被拒绝

c# - 我如何忽略错误以继续执行C#代码中的项目?

java - 在 Windows 上手动安装 Java?

mysql - 拒绝用户 root@localhost 在 mysql 上的访问

c++ - 来自 C++ 的 WMI 调用导致 HRESULT=0x80041003