我成功地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 filename.extension

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

然后删除旧文件用

rm filename.extension

或重命名旧文件

mv old-filename.extension new-filename.extension

创建新文件

cat > new-file.extension

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

其他回答

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

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

你可以安装nano

yum install nano

在注释中,没有默认的编辑器设置-奇怪- $ editor环境变量是空的。您可以通过以下方式登录到容器:

docker exec -it <container> bash

并运行:

apt-get update
apt-get install vim

或者使用下面的Dockerfile:

FROM  confluent/postgres-bw:0.1

RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "vim"]

Docker镜像在交付时被裁剪到最少——所以没有编辑器被安装在发货的容器中。这就是为什么需要手动安装它。

EDIT

我也鼓励你阅读我关于这个话题的文章。

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

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

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

可以打开现有文件

cat filename.extension

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

然后删除旧文件用

rm filename.extension

或重命名旧文件

mv old-filename.extension new-filename.extension

创建新文件

cat > new-file.extension

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