查看运行docker容器的目录

时间:2018-03-23 09:34:45

标签: windows powershell docker

我构建了一个Docker镜像。我想看看Docker容器中的内容。所以我尝试将以下命令运行到powershell中:

docker exec -ti c4609ec41e73 powershell

推出了PowerShell,但我无法做任何事情。我所看到的只是

Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

如何将此PowerShell启动到正在运行的容器中,我可以检查确切安装的是什么?

非常感谢一些帮助。

FROM jetbrains/teamcity-agent:latest-windowsservercore AS tools

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

FROM microsoft/dotnet-framework-build:4.7.1-windowsservercore-ltsc2016

ENV CONFIG_FILE="C:/BuildAgent/conf/buildAgent.properties" \
    JRE_HOME="C:\Program Files\Java\Oracle\jre" \
    NUGET_XMLDOC_MODE=skip \
    DOTNET_CLI_TELEMETRY_OPTOUT=true \
    DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true

EXPOSE 9090

VOLUME C:/BuildAgent/conf

COPY --from=tools /BuildAgent /BuildAgent
COPY --from=tools ["C:/Program Files/Git", "C:/Program Files/Git"]
COPY --from=tools ["C:/Program Files/Mercurial", "C:/Program Files/Mercurial"]
COPY --from=tools ["C:/Program Files/Java/Oracle", "C:/Program Files/Java/Oracle"]
COPY --from=tools ["C:/Program Files/Java/OpenJDK", "C:/Program Files/Java/OpenJDK"]
#COPY ["/MSBuild/12.0", "C:/Program Files (x86)/MSBuild/12.0"]
#COPY ["/MSBuild/14.0", "C:/Program Files (x86)/MSBuild/14.0"]
COPY --from=tools ["C:/Program Files (x86)/Microsoft Visual Studio", "C:/Program Files (x86)/Microsoft Visual Studio"]

# Install Nod
#RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest https://nodejs.org/dist/v8.10.0/node-v8.10.0-x64.msi -OutFile nodejs.msi; \
#   Start-Process msiexec -Wait -ArgumentList /q, /i, nodejs.msi; \
#   Remove-Item -Force nodejs.msi

CMD ./BuildAgent/run-agent.ps1

1 个答案:

答案 0 :(得分:0)

检查您自己的Windows系统是否包含此文件夹 VisualStudio \ v15.0 \ folders 因为你的dockerfile

COPY --from=tools ["C:/Program Files (x86)/Microsoft Visual Studio", "C:/Program Files (x86)/Microsoft Visual Studio"]

我认为这个copys的工作就像从你的系统复制 C:/ Program Files(x86)/ Microsoft Visual Studio 到你的图像。

-------------------------以下老答案------------------- ----------------------------------

我认为你的操作系统是windows。 我不确定您的docker镜像是否也是基于Windows的图像,因为大多数容器都基于ubuntu。

假设您的容器基于ubuntu,您应该首先运行容器,如

docker run -it --rm your_image 

你刚从image your_image创建了一个容器。每个容器都有一个唯一的container_ID。

-it: interactive terminal
--rm: remove the container when you get out of it

当你运行图像并进入容器时,这意味着你在ubuntu系统中(在容器中),它看起来应该是

root@2be3d9fd944:_

然后你可以输入

apt list --installed 

查看您在ubuntu系统下安装的内容,这一切都发生在容器中。

假设您正在使用Windows操作系统并且还有一个基于Windows的docker镜像(这里有一些official windows image base),但运行docker image始终是相同的。

docker run -it [other_options] IMAGE_ID

并且你在容器中,做你熟悉的windows shell。

----------------------------------------------- ------------------------------

如果您不使用选项-it(交互式终端),您可以像在问题中那样做。 您可以在正在运行的容器中运行命令,如下所示

docker run [other_options] IMAGE_ID

现在你从IMAGE_ID创建了一个容器,你得到一个container_ID,你可以做到

docker ps

查看容器信息,然后执行

docker exec -it [other_OPTIONS] CONTAINER_ID COMMAND [ARG...]

运行-it选项。

请阅读更多Official docker documentation,让自己更加清楚Docker的作用,这样可以节省您的实际时间。