当容器无法启动时,如何访问 Docker 容器的数据(未映射到任何卷)?
假设我是这样启动容器的:
docker run -it --name testContainer ubuntu /entrypoint.sh
并且由于entrypoint.sh
某种原因后来无法保持运行(换句话说,容器实际上没有启动),但我想访问存储在该容器中的某个日期(例如/var/www/html/XYZ),如何我可以这样做吗?
当容器无法启动时,如何访问 Docker 容器的数据(未映射到任何卷)?
假设我是这样启动容器的:
docker run -it --name testContainer ubuntu /entrypoint.sh
并且由于entrypoint.sh
某种原因后来无法保持运行(换句话说,容器实际上没有启动),但我想访问存储在该容器中的某个日期(例如/var/www/html/XYZ),如何我可以这样做吗?
您可以
docker cp
在停止的容器上:这会将容器中 /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。