如何访问 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。