bash – 如何在停止/不启动码头容器中编辑文件

尝试修复错误并调试我的应用程序分裂在几个容器上的问题,我经常编辑容器中的文件

>我完全懒惰并安装nano并直接在容器或
我将文件从该容器中卸载出来,编辑它,将其复制并重新启动容器

这些是在开发容器构建新内容之前的中间步骤,这比上述(这当然只是中间/虚拟的)需要更长的时间.

现在我经常打破容器的启动程序,在这种破坏的情况下,它是一个节点脚本或一个Python webserver脚本,两者通常都不会出现语法错误.

有没有办法保存这些容器?由于他们不开始,我不能将执政官对准他们,因此他们迷失了我.然后在构建输入中修复违规文件后,再去rm / rmi / build / run路由.

如何在一个停止的容器中编辑文件,或者将它们插入或启动一个停止的容器中的shell – 任何允许我修复这个容器的东西?

(这似乎有点像在远程计算机上工作并破坏网络配置 – 连接以这种方式“永远”丢失,一个必须使用后备(如果存在).

How to edit Docker container files from the host?看起来相关但是已经过时了.

回答我自己的问题..仍然希望从一个更有知识的人更好的答案!

有两种可能性.

1)直接在主机上编辑文件系统.这有点危险,有机会完全打破容器,可能其他数据取决于出了什么问题.

2)将启动脚本更改为永远不会失败的东西,如启动bash,执行修复/编辑,然后将启动程序重新更改为所需的启动程序(如节点或之前的任何内容).

更多细节:

1)使用

docker ps

找到正在运行的容器或

docker ps -a

找到所有容器(包括停止的)和

docker inspect (containername)

寻找“Id”,第一个值之一.

这是包含实现细节的部分,可能会更改,请注意,您可能会以此方式丢失容器.

/var/lib/docker/aufs/diff/9bc343a9..(long container id)/

并且在那里您会发现所有文件被更改为容器所基于的图像.您可以覆盖文件,添加或编辑文件.

再次,我不会推荐这个.

2)如http://stackoverflow.com/a/32353134/586754所述,您可以在路径中找到配置json config.json

/var/lib/docker/containers/9bc343a99..(long container id)/config.json

在那里你可以从e更改args. G. “nodejs app.js”到“/ bin / bash”.现在重新启动docker服务并启动容器(您应该看到它现在正确启动).你应该使用

docker start -i (containername)

以确保它不会立即退出.您现在可以使用容器和/或以后附加

docker exec -ti (containername) /bin/bash

此外,docker cp对于复制在容器外编辑的文件非常有用.

而且,如果容器或多或少“丢失”了,那么只能回到这些措施,所以任何改变都会有所改善.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...