当 Docker 容器的数据未映射到卷时,如何访问它们?

当 Docker 容器的数据未映射到卷时,如何访问它们?

如何访问 Docker 容器的数据(未映射到任何卷),容器启动失败?

假设我像这样启动了容器:

docker run -it --name testContainer ubuntu /entrypoint.sh

并且entrypoint.sh由于某种原因后来无法继续运行(换句话说,容器实际上没有启动),但我想访问存储在该容器中的一些日期(例如 /var/www/html/XYZ),我该怎么做?

答案1

您可以docker cp在已停止的容器上执行以下操作:

docker cp containername:/root .

这会将容器内文件夹 /root 中的所有内容(递归)复制到主机上的当前目录 $PWD 中的 ./root

如果你需要 shell 访问权限,可以采用以下方式https://github.com/jpetazzo/nsenter

另一种方式是将停止的容器提交到临时映像中,然后使用可用的 shell 从该映像运行容器:

docker commit containername tmpimage

docker run -it tmpimage /bin/bash

如果图像定义了 ENTRYPOINT,则必须替换它:

docker run -it --entrypoint=/bin/bash tmpimage

如果 alpine 或其他发行版没有 bash,请将 bash 更改为 ash 或 sh。

相关内容