如何在docker容器上运行vi?

Kra*_*ain 53 linux vi vim text-editor docker

我在我的主机虚拟机上安装了docker.现在想要使用创建文件vi.

但它给我一个错误:

bash: vi: command not found
Run Code Online (Sandbox Code Playgroud)

aru*_*hpj 79

使用以下命令登录容器:

docker exec -it <container> bash
Run Code Online (Sandbox Code Playgroud)

然后,运行以下命令.

apt-get update
apt-get install vim
Run Code Online (Sandbox Code Playgroud)

  • 如果在运行apt-get时遇到权限被拒绝的问题,则需要以root用户身份运行docker exec。“ docker exec -u root -it &lt;容器&gt; bash”。然后apt-get应该起作用。 (7认同)

小智 32

你的容器可能没有安装它开箱即用.

apt-get install vim在终端运行,你应该准备好了.

  • 不要忘记先运行`apt-get` update. (23认同)
  • 在运行“apt-get install vim”之前,您需要运行“apt-get update”。 (4认同)
  • 首先 **`apt-get update`** 然后 **`apt-get install vim`** (4认同)
  • 是的,但我更喜欢`vim-tiny`(Ubuntu) (2认同)

Yog*_*cha 30

用这个:

apt-get update && apt-get install -y vim
Run Code Online (Sandbox Code Playgroud)

上面命令的解释

  1. apt-get update => 将更新当前包
  2. apt-get install => 将安装包
  3. -y => 将绕过权限,默认权限将设置为是。
  4. vim => 要安装的软件包的名称。


BMi*_*tch 18

要运行的命令取决于您使用的基本映像.

对于Alpine,vi安装为基本操作系统的一部分.安装vim将是:

apk -U add vim
Run Code Online (Sandbox Code Playgroud)

对于Debian和Ubuntu:

apt-get update && apt-get install -y vim
Run Code Online (Sandbox Code Playgroud)

对于CentOS,vi通常与基本OS一起安装.用于vim:

yum install -y vim
Run Code Online (Sandbox Code Playgroud)

这应该只在早期开发中完成.获得工作容器后,应对您的映像或存储在容器外部的配置进行文件更改.更新Dockerfile以及用于构建新映像的其他文件.这当然不应该在生产中完成,因为容器内的变化是设计上的短暂的,并且在更换容器时会丢失.


Rea*_*hed 12

投票最多的答案有正确的想法,但是,它在我的情况下不起作用。@java25的评论对我来说起到了作用。我必须以root用户身份登录 docker 容器才能安装 vim。我只是将评论作为答案发布,以便其他遇到类似问题的人更容易找到它。

docker exec -ti --user root <container-id> /bin/bash
Run Code Online (Sandbox Code Playgroud)

进入 docker 后,立即运行以下命令来安装 vi。

apt-get update
apt-get install vim
Run Code Online (Sandbox Code Playgroud)


小智 9

在您的Dockerfile中添加以下行,然后重建Docker映像。

RUN apt-get update && apt-get install -y vim
Run Code Online (Sandbox Code Playgroud)


Pou*_*nam 8

在基于 Debian 的容器中使用以下命令:

apt-get install vim-tiny
Run Code Online (Sandbox Code Playgroud)

在 Dockerfile 中使用的完整说明:

RUN apt-get update && apt-get install --no-install-recommends -y \   
 vim-tiny \  
 && apt-get clean && rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)

它不会安装不必要的软件包并删除不必要的下载文件,因此您的 docker 镜像大小不会显着增加。


Mat*_*hew 5

或者,通过不安装不必要的编辑器来减小Docker映像的大小。您可以通过ssh将文件从docker主机编辑到容器:

vim scp://remoteuser@container-ip//path/to/document
Run Code Online (Sandbox Code Playgroud)

  • 这不是只有在[容器正在运行 ssh](https://docs.docker.com/engine/examples/running_ssh_service/) 时才有效吗?起初我认为这是一个绝妙的主意,但似乎无法让它发挥作用。 (5认同)

小智 5

错误::bash: vi: command not found

通过以 root 用户身份登录到容器来运行以下命令——

docker exec --user="root" -it (container ID) /bin/bash
apt-get update
apt-get install vim
Run Code Online (Sandbox Code Playgroud)