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

如何编辑文件?


当前回答

Docker没有编辑器。所以只需安装vim, 36MB的空间不会杀死你的docker!

其他回答

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

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

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

(更多)

可以打开现有文件

cat filename.extension

并复制剪贴板上所有现有的文本。

然后删除旧文件用

rm filename.extension

或重命名旧文件

mv old-filename.extension new-filename.extension

创建新文件

cat > new-file.extension

然后粘贴剪贴板上复制的所有文本,按Enter键并按ctrl+z退出保存。瞧,不需要安装任何类型的编辑器。

有时你必须先用root运行容器:

docker exec -ti --user root <container-id> /bin/bash

然后在容器中,安装Vim或其他东西:

apt-get install vim

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

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

确保在尝试安装编辑器之前更新容器。

apt-get update
apt-get install nano vi