如何在已停止的Docker容器上运行命令?

问题描述:

我有一个以前用过的Wordpress容器。由于链接容器的变化,Wordpress容器现在不能再启动了(EntryPoint代码有错误)如何在已停止的Docker容器上运行命令?

由于Wordpress容器包含一些未存储在主机文件系统中的配置,我不应该现在重做docker run。相反,我希望bash进入已停止的容器,检查所有已更改的文件,并首先备份这些文件。

有没有办法在停止的容器上执行bash?如何做?

更自然的方法是使用docker diff来检查对容器文件系统的更改。 - 只会显示更改文件的名称。

如果您很幸运能够使用成熟的容器,并且对卷进行了更改,则可以使用--volumes-from <stopped container>启动一个新的容器。

或者,你可以start停止的容器,然后做exec进入它。

第三种选择是将停止的容器作为图像提交并从中启动一个新的容器。

+0

我做了'码头差异',但只看到一些变化。正确的,'/ wp-content/uploads'文件夹中必须有相当多的图像。 'docker diff'总是显示与初始图像相比容器中所有已更改的文件吗? – 2015-02-07 11:18:54

+0

我无法'开始',然后'执行'。如果你没有看到带有'docker diff'的文件,'start'会提前终止容器(由于EntryPoint中的错误),之后我有机会'exec' – 2015-02-07 11:20:02

+1

,那么它们仍然存在于卷上。您可以通过执行docker run -it -volumes-from ubuntu'来轻松恢复它们。 – 2015-02-07 11:24:10

搬运工运行-v/MYDATA --name MYDATA的Ubuntu /斌/假

然后......如果没有运行:-(

泊坞窗EXEC MYDATA触摸/ MYDATA /富#不起作用

一个很好的解决办法是要附加到数据容器,每次运行一个一次性的容器。在这种情况下,数据容器本身可能是完全空的,作为临时容器将有操作系统的工具。

$ docker run --rm --volumes-from mydata -it ubuntu bash 
[email protected]:/# ls /mydata 
[email protected]:/# touch /mydata/foo 
[email protected]:/# exit 
exit