如何列出docker容器内的所有目录和文件?

var*_*ble 2 docker dockerfile docker-image docker-container docker-for-windows

以下是我的 dockerfile:

FROM python:3.6.5-windowsservercore
COPY . /app
WORKDIR /app
RUN pip download -r requirements.txt -d packages
Run Code Online (Sandbox Code Playgroud)

要获取图像中的文件列表,我尝试了以下两个选项,但出现错误:

encountered an error during CreateProcess: failure in a Windows system call: 
The system cannot find the file specified. (0x2) extra info: 
{"CommandLine":"dir","WorkingDirectory":"C:\\app"......
Run Code Online (Sandbox Code Playgroud)
  1. docker run -it <container_id> dir
  2. 修改 dockerfile 并在 dockerfile - 末尾添加 CMD CMD ["dir"],然后运行docker run <container_id> dir

如何列出docker中的所有目录和文件?

Dav*_*ave 9

这就是我最终发现有帮助的。感谢 Nischay 的带路。当然,这样做的好处是,即使发布在稍后阶段失败,人们也可以检查文件。

# Copy everything...
COPY . ./
# See everything (in a linux container)...
RUN dir -s    
# OR See everything (in a windows container)...
RUN dir /s
Run Code Online (Sandbox Code Playgroud)

  • `dir -s` 不适用于所有 Linux 容器 (6认同)

jos*_*faz 5

只需使用该exec命令。

现在,因为您运行基于windowsservercore 的图像使用powershell命令(并且/bin/bash在基于 linux 的图像的许多示例中都看不到,并且默认情况下未安装在基于 windowsservercore 的图像上)所以只需执行以下操作:

docker exec -it <container_id> powershell
Run Code Online (Sandbox Code Playgroud)

现在你应该得到一个迭代终端,你可以通过简单地执行lsdir

顺便说一句,我发现了这个问题:

探索 Docker 容器的文件系统

它包含大量的答案和建议,也许您可​​以在那里找到其他好的解决方案(例如,有一个非常友好的 CLI 工具来探索容器:https : //github.com/wagoodman/dive


nis*_*yal 4

在您Dockerfile添加以下命令:

FROM python:3.6.5-windowsservercore
COPY . /app
WORKDIR /app
RUN dir #Added
RUN pip download -r requirements.txt -d packages
Run Code Online (Sandbox Code Playgroud)