[英]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
似乎vi或vim都不可用:
$ 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
如果您的容器中有apt
或apt-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.