如何在已停止的 Docker 容器上执行 运行 命令?
How to run command on stopped Docker container?
我有一个以前用过的 Wordpress 容器。由于链接容器的变化,Wordpress容器现在无法启动(入口点代码有错误)
由于 Wordpress 容器包含一些未存储在主机文件系统中的配置,我现在不应该重做 docker run
。相反,我希望 bash
进入停止的容器,检查所有更改的文件,然后先备份这些文件。
有没有办法在停止的容器上执行 bash
?如何操作?
更自然的方法是使用 docker diff
检查容器文件系统的更改。 - 将仅显示更改文件的名称。
如果您幸运地使用了成熟的容器并且对卷进行了更改,则可以使用 --volumes-from <stopped container>
启动一个新容器。
或者您可以 start the stopped container and then do exec 进入。
第三个选项是将停止的容器作为映像提交并从中启动一个新容器。
docker 运行 -v /mydata --name mydata ubuntu /bin/false
然后...
docker exec mydata touch /mydata/foo # 如果不是 运行ning 则不起作用 :-(
一个好的解决方案是 运行 每次要附加到数据容器时使用一次性容器。在这种情况下,数据容器本身可能完全是空的,因为临时容器将具有 OS 工具。
$ docker run --rm --volumes-from mydata -it ubuntu bash
root@645045d3cc87:/# ls /mydata
root@645045d3cc87:/# touch /mydata/foo
root@645045d3cc87:/# exit
exit
我有一个以前用过的 Wordpress 容器。由于链接容器的变化,Wordpress容器现在无法启动(入口点代码有错误)
由于 Wordpress 容器包含一些未存储在主机文件系统中的配置,我现在不应该重做 docker run
。相反,我希望 bash
进入停止的容器,检查所有更改的文件,然后先备份这些文件。
有没有办法在停止的容器上执行 bash
?如何操作?
更自然的方法是使用 - 将仅显示更改文件的名称。docker diff
检查容器文件系统的更改。
如果您幸运地使用了成熟的容器并且对卷进行了更改,则可以使用 --volumes-from <stopped container>
启动一个新容器。
或者您可以 start the stopped container and then do exec 进入。
第三个选项是将停止的容器作为映像提交并从中启动一个新容器。
docker 运行 -v /mydata --name mydata ubuntu /bin/false
然后...
docker exec mydata touch /mydata/foo # 如果不是 运行ning 则不起作用 :-(
一个好的解决方案是 运行 每次要附加到数据容器时使用一次性容器。在这种情况下,数据容器本身可能完全是空的,因为临时容器将具有 OS 工具。
$ docker run --rm --volumes-from mydata -it ubuntu bash
root@645045d3cc87:/# ls /mydata
root@645045d3cc87:/# touch /mydata/foo
root@645045d3cc87:/# exit
exit