在Docker容器中编辑文件

18

我该如何编辑已下载到主机上的Docker容器内部的配置文件?

我正在使用这个教程,但我不确定在哪里可以找到并编辑traefik.toml文件。


这个回答解决了你的问题吗?如何在进入Docker容器后编辑文件? - Sean
5个回答

49

有多种方法可以实现这个目标:

您可以通过运行以下命令进入容器:

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

还有一种绑定挂载的方式,可以将主机文件夹挂载到容器中。

docker run -v $(pwd)/files:/dir/containing/file/in/container ...

在容器中挂载之后,创建于该文件夹内的文件将会在主机上可见 但是,如果在挂载之前该文件夹已存在于容器中,则会被主机文件夹所覆盖,使得主机和容器均无法访问。


你得到了我的点赞,但需要注意的是,选项1在traefik容器上不起作用,而这正是问题所在。例如,你甚至不能执行docker exec -it <container-name> /bin/sh来获取容器的默认shell。我有点相信(尽管无法完全解释)它没有任何可以执行的shell来执行任何形式的docker exec -it - Arthur Weborg
你可能是对的。Traefik镜像基于scratch。 - yamenk
6
第三个选项将主机中的文件夹绑定到容器中,而不是反过来。 - Tamlyn
@Tamlyn 好观点!我使用第三个选项,认为它是从容器到主机的绑定,并想知道为什么它不起作用。我认为 yamenk 应该编辑他们的答案。 - xperator
在第二个选项中,当您从Docker容器中提取文件时,"."代表什么?我应该在Windows文件系统的哪里找到这些文件? - SquishyRhode

9
我遇到了相同的问题,并找到了一个不错的解决方法。使用VS Code和docker扩展,让容器运行。在容器列表中,右键单击要编辑的容器。选择:附加Visual Studio Code。

Attach VS Code to Docker

另一个 VS Code 实例会打开,直接连接到容器。点击“打开文件夹”,然后导航到您想编辑的文件。倒一杯好啤酒,稍事休息,然后继续编码。:)

VS Code attached to Docker


1
这个能在 Windows 容器上运行吗?我遇到了用户名/密码错误。 - user1594257
这个 VS Code 功能的文档在这里。不过你的扩展程序并不会自动转移,需要在容器内重新安装。 - bwdm
1
请注意,您需要安装VS Code扩展程序Remote - Containers。您可以在以下链接中找到该扩展程序:https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers - aykcandem
在上面的评论中提到,如果没有安装 Remote - Containers 扩展程序,您将看不到“附加 Visual Studio Code”选项。 - James Baird

0

是的,也可以完美地使用 Windows 容器。

  1. 在崩溃的容器中运行 cmd 以防止退出:

    docker run -dit docker/image cmd

  2. 使用 Docker 扩展启动 VS Code。每个文件都有一个打开和下载选项,非常方便。


0

0
如果您想向文件中添加一行配置之类的内容,可以使用以下命令将其追加到文件末尾:echo "要添加的内容" >> 文件名。
echo 'super-setting: "10.96.85.221:9200"' >> config.yml

这仅适用于添加额外行而不是编辑现有行的情况。

我发现这是在Docker容器中快速轻松地进行文件临时更改和测试的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接