【发布时间】:2021-11-05 04:06:14
【问题描述】:
我正在构建一个像 docker build . -t test 这样的新图像,并将主机操作系统文件夹中的内容复制到其中:
Dockerfile
FROM mcr.microsoft.com/windows/servercore:ltsc2019
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN mkdir root
RUN cd root
WORKDIR /root
RUN mkdir test
COPY test /root/test
#USING 'COPY' here instead of 'ADD' because of https://stackoverflow.com/questions/24958140/what-is-the-difference-between-the-copy-and-add-commands-in-a-dockerfile
我在 Powershell 中得到这个输出:
PS D:\Programs> docker build . -t test
Sending build context to Docker daemon 1.644GB
Step 1/7 : FROM mcr.microsoft.com/windows/servercore:ltsc2019
ltsc2019: Pulling from windows/servercore
4612f6d0b889: Pull complete
c67ded6868b6: Pull complete
Digest: sha256:1be9c8378b8c32d31538253a4b96169f5138a5f6d4c0a04e8d8f9a80b9ac8097
Status: Downloaded newer image for mcr.microsoft.com/windows/servercore:ltsc2019
---> d1724c2d9a84
Step 2/7 : SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
---> Running in 1bfefefbe433
Removing intermediate container 1bfefefbe433
---> 37de702deb33
Step 3/7 : RUN mkdir root
---> Running in e26d6b49ced7
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 9/8/2021 1:07 PM root
Removing intermediate container e26d6b49ced7
---> 451c4d3f3ea1
Step 4/7 : RUN cd root
---> Running in 74a228f8118f
Removing intermediate container 74a228f8118f
---> 3f175ac67f1d
Step 5/7 : WORKDIR /root
---> Running in 5f783d5b2332
Removing intermediate container 5f783d5b2332
---> 68b24e033f87
Step 6/7 : RUN mkdir test
---> Running in 5771bb7a593a
Directory: C:\root
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 9/8/2021 1:08 PM test
Removing intermediate container 5771bb7a593a
---> 35fa0b2af157
Step 7/7 : COPY test /root/test
---> 60eab8242865
Successfully built 60eab8242865
Successfully tagged test:latest
它在主机操作系统的文件夹“\docker\windowsfilter”中创建八个(!)文件夹
这似乎太过分了,它看起来像是我的Dockerfile 中每个步骤的文件夹,那么所有这些文件夹有什么用,我可以阻止创建/自动删除不需要的文件夹以保持一切整洁吗?
主机操作系统:Windows Server 2019 标准版本 1809 17763.2114
Docker:版本 20.10.4,构建 110e091
请注意,我不使用 Docker 桌面应用程序,see here 我是如何安装 Docker 的。
更新 1
我根据@Noam 的建议更新了我的 Dockerfile,如下所示:
#RUN mkdir root
#RUN cd root
#WORKDIR /root
WORKDIR /root #creates root directory if not exists, then enters it
在此更改之后,windowsfilter 中创建了 6 个文件夹(而不是 8 个),因此我对 Docker 为 Dockerfile 中的每个命令创建一个文件夹的预感似乎是正确的。
【问题讨论】:
-
你有什么windows版本?请指定确切的版本(即家庭版、专业版、服务器版、通用版、版本构建)
标签: windows docker containers windows-server-2019