我有一个简单的docker文件,该文件在Windows映像中安装了一个编译器(IAR EWARM)。
Dockerfile:
FROM mcr.microsoft.com/windows:1903
WORKDIR /docker_work
# Copy the IAR installation media and do the install
COPY ./Environment/EWARM_8302_18209_install_media /EWARM_8302_18209_install_media
COPY ./Environment/IAR_install_iss /IAR_install_iss
RUN C:\EWARM_8302_18209_install_media\ew\setup.exe /s \
/f1"C:\IAR_install_iss\setup.iss" \
/f2"C:\docker_work\iar_install.log"
COPY ./IAR ./IAR
我希望此安装大约需要10分钟才能在我的系统上完成。但是我注意到它似乎并没有完全完成。我可以离开系统再回来,看来该步骤仍在进行中。如果输入密钥,则输出表明该步骤已完成。
示例输出:
PS C:\work\my_project> docker build -t iar_env . ; docker run -it --rm iar_env powershell.exe
Sending build context to Docker daemon 1.246GB
Step 1/6 : FROM mcr.microsoft.com/windows:1903
---> ab37d72f0d0e
Step 2/6 : WORKDIR /docker_work
---> Using cache
---> b2bc1fcd7970
Step 3/6 : COPY ./Environment/EWARM_8302_18209_install_media /EWARM_8302_18209_install_media
---> 743e35532adf
Step 4/6 : COPY ./Environment/IAR_install_iss /IAR_install_iss
---> 230c9d3afa0c
Step 5/6 : RUN C:\EWARM_8302_18209_install_media\ew\setup.exe /s /f1"C:\IAR_install_iss\setup.iss" /f2"C:\docker_work\iar_install.log"
---> Running in c0caf75330f0 <------- The hang occurs here. If I hit the enter key the build continues
Removing intermediate container c0caf75330f0
---> 061050e6b765
Step 6/6 : COPY ./IAR ./IAR
---> ef1d0e9d34dd
Successfully built ef1d0e9d34dd
Successfully tagged iar_env:latest
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\docker_work> ls
Directory: C:\docker_work
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 5/20/2020 11:47 AM IAR
-a---- 5/20/2020 11:40 AM 186 iar_install.log
PS C:\docker_work> cat .\iar_install.log
[InstallShield Silent]
Version=v7.00
File=Log File
[ResponseResult]
ResultCode=0
[Application]
Name=IAR Embedded Workbench for Arm
Version=8.30.2
Company=IAR Systems
Lang=0409
PS C:\docker_work>
我正在运行Docker版本19.03.8,构建afacb8b。仅当实际上需要运行第五步并且无法使用缓存时,才会发生此问题。这可能不是日常问题,但是我担心如果出于某种原因需要重新构建映像,它将导致我的构建服务器挂起。为什么会发生这种挂起?