如何访问Docker容器的数据时,他们没有映射到一个卷?

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

让我们说我开始这样的容器:

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

entrypoint.sh由于某种原因后来无法继续运行(换句话说容器实际上不启动),但我想获得存储在该容器中的某个date(例如/ var / www / html / XYZ ), 我怎样才能做到这一点?

你可以在一个停止的容器上docker cp

 docker cp containername:/root . 

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

如果你需要shell访问,在途中可能是https://github.com/jpetazzo/nsenter

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

docker commit containername tmpimage

docker run -it tmpimage /bin/bash

如果图像定义了入口点,则必须replace它:

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

如果高山或其他发行没有bash更改bash灰或sh。