【发布时间】:2017-03-30 16:48:08
【问题描述】:
我一直在使用 Docker for Windows,试图创建一个 Windows 容器,该容器可以在容器本身内将 cygwin 作为 shell 运行。我还没有运气让这一切顺利进行。这是我一直在搞乱的 Dockerfile。
# escape=`
FROM microsoft/windowsservercore
SHELL ["powershell", "-command"]
RUN Invoke-WebRequest https://chocolatey.org/install.ps1 -UseBasicParsing | Invoke-Expression
RUN choco install cygwin -y
RUN refreshenv
RUN [Environment]::SetEnvironmentVariable('Path', $env:Path + ';C:\tools\cygwin\bin', [EnvironmentVariableTarget]::Machine)
我尝试设置 ENTRYPOINT 和 CMD 以尝试进入 cygwin,但似乎都没有做任何事情。我还使用docker run -it 附加到容器并启动了 cygwin 命令以进入 shell,但它似乎没有做任何事情。我没有收到错误,它只是返回到命令提示符,就好像什么都没发生一样。
是否可以在 Windows 容器中运行另一个 shell,或者我只是做错了什么?
谢谢!
【问题讨论】:
-
似乎有一整类二进制文件不在 Windows docker 容器中运行(静默退出)。 Cygwin 二进制文件就是一个例子。 64 位不是问题,因为它发生在 nanoserver 和 windowsservercore 上。如果有人知道这笔交易是什么,请插话。
-
@Akom 对此有何想法/进展?遇到了同样的问题,容器只是崩溃了
-
我将为此开一个赏金,因为这是一个需要解决的重要主题 - 在 DevOps 环境中非常相关
-
@Żubrówka 我已经编辑了我的答案:没有决定性的进展,除了可能的解决方法。
-
@Żubrówka,我没有看到容器崩溃,这是无法在容器中运行的可执行文件。我对此一无所知。我看到有几张类似症状的票被打开,但没有找到解释。
标签: windows shell docker cygwin