此问题显示如何从已停止的容器中复制文件.这要求我知道文件的完整路径,包括其文件名.我知道我要复制文件的目录,但我不知道它的文件名,因为它是动态生成的.如何列出已停止的Docker容器中的目录中的文件?
如果Docker容器正在运行,以下Docker命令可以正常工作.但是,如果Docker容器停止,它将失败.
docker exec --privileged MyContainer ls -1 /var/log
Run Code Online (Sandbox Code Playgroud)
Nat*_*han 16
这样的回答另一个问题时展示如何启动另一个命令停止容器.以下是列出已停止容器中的文件的命令.
test_image.
docker commit $CONTAINER_ID test_imagedocker run -ti --entrypoint=sh test_imagedocker exec --privileged $NEW_CONTAINER_ID ls -1 /var/logAza*_*iev 15
如果你想查看某个文件内容,我建议使用docker container cp命令。这是文档。它适用于停止的容器。例子:
docker container cp 02b1ef7de80a:/etc/nginx/conf.d/default.conf ./
Run Code Online (Sandbox Code Playgroud)
这样我就得到了模板引擎在启动过程中生成的配置文件。
该命令docker diff *CONTAINER*将列出自容器启动以来添加、删除和更改的文件。
如果自容器启动后文件没有更改,则您必须知道启动容器的原始映像的内容。所以,这个答案并不理想,但避免了创建图像并运行它。
与 不同container-diff,此命令不需要先创建 Docker 映像。
当启动容器不是一种选择时,您可以随时导出您的图像(有点矫枉过正,但是..)并列出其内容:
docker export -o dump.tar <container id>
tar -tvf dump.tar
Run Code Online (Sandbox Code Playgroud)
参考:Baeldung - 探索 Docker 容器的文件系统
小智 5
docker container cp <STOPPED_CONTAINER_ID>:<PATH_TO_FILE> -
Run Code Online (Sandbox Code Playgroud)
请注意命令末尾的“-”。
它实际上将指定文件从停止的容器“复制”到“stdout”中。换句话说,它只是打印文件内容。
感谢@azat-khadiev 的指导(我不知道为什么你的答案是“-1...)
| 归档时间: |
|
| 查看次数: |
7358 次 |
| 最近记录: |