![当 Docker 容器的数据未映射到卷时,如何访问它们?](https://linux22.com/image/708993/%E5%BD%93%20Docker%20%E5%AE%B9%E5%99%A8%E7%9A%84%E6%95%B0%E6%8D%AE%E6%9C%AA%E6%98%A0%E5%B0%84%E5%88%B0%E5%8D%B7%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%BF%E9%97%AE%E5%AE%83%E4%BB%AC%EF%BC%9F.png)
如何访问 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。