Docker for Windows:如何使用映像目录的内容初始化卷?

时间:2018-08-28 12:58:59

标签: docker docker-for-windows

我的图像具有以下目录:C:\ MyDir。该目录具有一些在构建映像时创建的预定义内容。

我想保留对该目录的更改,因此我尝试使用卷,但是当我这样做并在创建容器时,C:\ MyDir为空。据我从Docker文档中了解到的,似乎如果我使用匿名卷,则C:\ MyDir的实际内容(来自图像)将在创建过程中反映在该卷中,因此应该在容器中显示它们,但是它们不是-似乎没有从映像复制文件。当然,在容器中已经写入了一些新文件之后,这些文件就会反映在卷中。

关于如何实现此目标的任何想法? -要在保持运行状态不变的同时仍保留图像中的原始文件?

1 个答案:

答案 0 :(得分:1)

目前,适用于Windows的Docker 不支持此行为。 GitHub上的问题Windows: cannot put data in volumes with docker build当前正在对此进行跟踪。

当前,最接近的替代方法是执行以下操作:

#escape=`
FROM microsoft/windowsservercore
SHELL [ "powershell", "-Command" ]
COPY ".\starter-config" "C:\starter-config"
CMD if ((Get-ChildItem 'C:\config').Length -eq 0) {`
        Copy-Item 'C:\starter-config\*' 'C:\config\';`
    };`
    & 'C:\RunTheServer.ps1'