在 Docker 容器内编辑文件
Posted
技术标签:
【中文标题】在 Docker 容器内编辑文件【英文标题】:Editing Files inside of a Docker Container 【发布时间】:2018-05-09 11:22:54 【问题描述】:如何编辑已下载到主机上的 docker 容器内的配置文件?
我正在使用this tutorial,但我不确定在哪里可以找到和编辑 traefik.toml 文件
【问题讨论】:
这能回答你的问题吗? How do I edit a file after I shell to a Docker container? 【参考方案1】:有多种方法可以实现:
可以通过运行命令进入容器:
docker exec -it <container-name> bash
请注意,根据容器的不同,您可能没有简单的文本编辑器..
另一种选择是通过运行将要编辑的文件从容器复制到主机上:
docker cp <container-name>:/path/to/file/in/container .
编辑文件,然后将其复制回容器中:
docker cp <file> <container-name>:/path/to/file/in/container
第三个选项是创建一个bind mount,它将有效地将文件从容器暴露到主机上
docker run -v $(pwd)/files:/dir/containing/file/in/container ...
这样会暴露“files”目录下的container文件夹,可以在host中编辑文件,直接反映到container内部。
【讨论】:
你有我的支持,但重要的是要注意,选项 1 不适用于 traefik 容器,这是有问题的。例如,您甚至无法执行docker exec -it <container-name> /bin/sh
,它为您提供了容器的默认外壳。我稍微确信(虽然无法完全解释)它没有任何你可以执行的 shell 来执行任何形式的docker exec -it
你可能是对的。 traefik镜像是基于scratch的
第三个选项将一个文件夹从主机绑定到容器中,而不是相反。【参考方案2】:
我遇到了同样的问题,并找到了一个很好的方法来处理这个问题。使用 VS Code 和 docker 扩展,让容器运行。在容器列表中,右键单击要编辑的容器。选择:附加 Visual Studio 代码。
应该打开另一个直接附加到容器的 VS Code 实例。单击打开文件夹并导航到要编辑的文件。倒一杯好喝的黑啤酒,冷静片刻,然后继续编码。 :)
【讨论】:
这适用于 Windows 容器吗?获取用户名/密码错误。 这个 VS Code 特性的文档是available here btw。但是,您的扩展程序不会继续使用,需要将它们安装在容器内。 注意需要安装VS代码扩展Remote - Containers marketplace.visualstudio.com/…【参考方案3】:是的,也适用于 Windows 容器。
在崩溃的容器中运行 cmd 以防止退出:
docker run -dit docker/image cmd
使用 docker 扩展启动 VS Code。每个文件都有一个打开和下载的选项,很不错。
【讨论】:
以上是关于在 Docker 容器内编辑文件的主要内容,如果未能解决你的问题,请参考以下文章