如何在Docker容器停机/未启动时编辑文件

用例:我创build了一个漂亮的docker镜像,我的容器需要一些玩家(configuration文件的变化以供研究)。 我编辑一个文件(使用sed或vim ;-)),然后停止容器并尝试启动它。 现在我犯了一个错误的configuration和docker容器不会出现,当我这样做: docker restart <my-container-id/-name>如何编辑configuration文件来修复错误?

您可以使用docker cp将文件复制到/从容器中,无论是否正在运行,以及是否有卷:

 > docker run --name temp alpine touch /file1.txt > docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES > docker cp temp:/file1.txt . > ls file1.txt 

根据jpetazzo的build议(请参阅https://github.com/jpetazzo/nsenter/issues/27#issuecomment-53799568 ),我开始使用原始容器的“卷”的不同容器。 这里是如何:

 docker run --volumes-from <my-container-id/-name> -it busybox 

这将启动一个busyboxshell。 在那里你有vi和其他工具来检查和修复configuration文件。

尝试使用bin / bash入口点像这样运行容器:

 docker run -i -t --entrypoint /bin/bash ${imageName} 

应允许您访问容器并对其进行更改。

你好,从容器中创build一个图像,然后用bash启动它,然后进行修改。 你的容器现在以bash开始,所以你需要再次提交并使用你以前的命令运行它。 就这样:

 docker commit <containerid> docker images # to see the new imageid docker run -it <imageid> bash #Make the corrections and then exit bash docker commit <containerid> docker run <newimageid> formercommand 

问候