我成功地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:/#

如何编辑文件?


当前回答

如果安装了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

其他回答

如果你不想添加一个编辑器,只是做一些小的改变(例如,改变Tomcat配置),你可以使用:

docker cp <container>:/path/to/file.ext .

它将它复制到您的本地机器(到您的当前目录)。然后使用您喜欢的编辑器在本地编辑该文件,然后执行

docker cp file.ext <container>:/path/to/file.ext

替换旧文件。

如果安装了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

你可以安装nano

yum install nano

这有点古怪,但在必要时,您可以使用sed或awk进行小的编辑或删除文本。当然,要小心您的正则表达式目标,并注意您可能是容器的根用户,可能需要重新调整权限。

例如,删除包含匹配正则表达式的文本的整行:

awk '!/targetText/' file.txt > temp && mv temp file.txt

(更多)

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

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

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