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



我有一个基于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提供的CCD_ 2命令。根本无法保证。

此外,通常情况下,通过消除尽可能多的漏洞,使用于生产的Docker映像尽可能轻(和安全(。你不需要vi来运行你的入口控制器,所以它不在那里。

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

apt-get update && apt-get install vim

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

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>重复使用主机上的工具,但更改名称空间。

相关内容

  • 没有找到相关文章