繁体   English   中英

Vi 或 Vim 在 Ubuntu docker 容器上找不到

[英]Vi or Vim not found on Ubuntu docker container

我有一个基于 Ubuntu 映像在 k8s 中运行的 nginx 控制器容器:

Image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.0

容器内部:

$ kubectl exec -it nginx-ingress-controller-xyz bash
$ uname -a
Linux nginx-ingress-controller-xyz 4.15.0-1111-azure #123~16.04.1-Ubuntu SMP Sat Mar 20 01:52:07 UTC 2021 x86_64 GNU/Linux

似乎vivim都不可用:

$ vi
bash: vi: command not found
$ vim
bash: vim: command not found

我以为 vi/vim 总是在 linux 机器上?

按照POSIX 规范运行的vi命令对于操作系统自称为 Unix 是必需的。

Ubuntu 和其他基于 Linux 的操作系统未经认证,获得认证并不是一个目标,因此他们所做的只是尽可能地遵循规范。 因此,期望 vi“总是在 linux 机器上”或由 Vim 提供的vi命令是不合理的。 根本无法保证。

此外,习惯上通过去除尽可能多的杂质来使 Docker 图像生产尽可能轻巧(且安全)。 你不需要 vi 来运行你的 Ingress Controller 所以它不存在。

在这种情况下,对我来说,这种方法总是有效的。 首先 go 到您的容器,然后使用这些命令:

apt update
apt install vim

或者

apt update
apt install nano

如果您的容器中有aptapt-get命令,只需运行apt update && apt install vim ,否则您可以尝试:
nsenter -t <Pid> -n -m vi <your-file>重用主机上的工具,但更改命名空间。

您不会在 docker 映像中找到许多常用程序。 因为这些图像是轻量级的。
您可以在 ubuntu 图像上安装 vim

apt-get update && apt-get install vim

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM