我成功地shell到Docker容器使用:

docker exec -i -t 69f1711a205e bash

现在我需要编辑文件,我没有任何编辑器在里面:

root@69f1711a205e:/# nano
bash: nano: command not found
root@69f1711a205e:/# pico
bash: pico: command not found
root@69f1711a205e:/# vi
bash: vi: command not found
root@69f1711a205e:/# vim
bash: vim: command not found
root@69f1711a205e:/# emacs
bash: emacs: command not found
root@69f1711a205e:/#

如何编辑文件?


当前回答

你可以在主机上编辑你的文件,并快速复制到容器中运行。下面是复制并运行Python文件的一行快捷方式:

docker cp main.py my-container:/data/scripts/ ; docker exec -it my-container python /data/scripts/main.py

其他回答

我使用的是“docker run”(而不是“docker exec”),而且我处于一个不能安装编辑器的限制区域。但我在Docker主机上有个编辑。

我的解决方法是:从Docker主机绑定挂载一个卷到容器(https://docs.docker.com/engine/reference/run/#/volume-shared-filesystems),并在容器外编辑该文件。它是这样的:

docker run -v /outside/dir:/container/dir

这主要是为了试验,后来我在构建映像时更改了文件。

为了保持Docker映像较小,不要安装不必要的编辑器。你可以通过SSH从Docker主机编辑文件到容器:

vim scp://remoteuser@containerip//path/to/document

如果安装了cat,可以使用>字符。 下面是操作:

cat > file_to_edit
#1 Write or Paste you text
#2 don't forget to leave a blank line at the end of file
#3 Ctrl + C to apply configuration

现在您可以看到命令的结果

cat file

首次以root用户登录: Docker运行-u root -ti bash 输入以下命令: Apt-get update && 安装nano

参见堆栈溢出问题 Sed编辑文件到位

这将是一个很好的选择,如果:

要修改一个大文件,不可能使用cat。 不允许安装Vim或需要太长时间。 我的情况是使用MySQL 5.7镜像当我想改变My .cnf文件,没有vim, vi, vim安装需要太长时间(中国防火墙)。图像中提供了Sed,非常简单。我的用法是 Sed -i /s/testtobechanged/ texwanted /g文件名 使用man sed或查找其他教程以获得更复杂的用法。