0

我正在 Windows Server Core 2016 TP5 上尝试这个。我有这个简单的 Dockerfile:

FROM microsoft/iis

RUN powershell remove-item c:\inetpub\wwwroot\iisstart.*

microsoft/iis图像包含几个文件 (iisstart.htmiisstart.png) 在c:\inetpub\wwwroot. 我正在尝试删除这些文件。

这是 docker build 的输出:

c:\git\temp\test>docker build -t foo .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM microsoft/iis
 ---> c26f4ceb81db
Step 2 : RUN powershell remove-item c:\inetpub\wwwroot\iisstart.*
 ---> Running in 4d17a5ab86e5
 ---> d5f85251b3db
Removing intermediate container 4d17a5ab86e5
Successfully built d5f85251b3db

如果我现在启动一个容器并查看wwwroot,文件仍然存在。

docker run --rm -it foo cmd

Microsoft Windows [Version 10.0.14300]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\>cd inetpub\wwwroot

C:\inetpub\wwwroot>dir
 Volume in drive C has no label.
 Volume Serial Number is 5664-BDCB

 Directory of C:\inetpub\wwwroot

05/19/2016  07:05 PM    <DIR>          .
05/19/2016  07:05 PM    <DIR>          ..
05/05/2016  03:27 PM               703 iisstart.htm
05/05/2016  03:27 PM            99,710 iisstart.png
               2 File(s)        100,413 bytes
               2 Dir(s)  21,209,399,296 bytes free

C:\inetpub\wwwroot>

在正在运行的容器中,如果我执行powershell remove-item c:\inetpub\wwwroot\iisstart.*,文件会被很好地删除。为什么相同的命令在 dockerfile 中不起作用?

我也尝试del c:\inetpub\wwwroot\iisstart.*过类似的结果。

4

1 回答 1

0

你会走错路C:\>cd inetpub\wwwroot

你必须去你的容器路径,所以:

运行后-d your image

  1. docker exec -it "containerID" pwoershell
  2. C:\>cd inetpub\wwwroot
  3. ls

当您的 Dockerfiles 工作时,这将是可以的

于 2018-02-28T10:48:42.417 回答