当前位置: 首页 > 知识库问答 >
问题:

无法在docker容器中使用vi或vim命令?

柳俊彦
2023-03-14

它是CentOS 7,已经在我的CentOS中安装了vi和vim,我可以使用它们。我在CentOS中运行docker,当我执行下面这一行时:

docker exec -it mysolr /bin/bash

我不能在solr容器中使用vi/vim:

bash: vim: command not found

为什么会这样?我该如何修复它,以便使用vi/vim在docker容器中编辑文件?

共有1个答案

龙昊焱
2023-03-14

典型的Docker映像包含一组最小的库和实用程序来运行一个特定的程序。此外,Docker容器文件系统的寿命并不长:删除和重新创建容器是非常常规的,例如使用较新版本的基本映像。

这样做的结果是您永远不想直接编辑Docker容器中的文件,并且大多数图像都没有使用“丰富”的编辑工具进行设置。(BusyBox包含最小的vi,因此大多数基于阿尔卑斯山的图像也会。)如果您进行一些更改,它将在您删除容器后立即丢失。(同样,您通常可以安装vimemacs或其他任何东西,但一旦容器被删除,它就会丢失:在正在运行的容器中安装软件通常不是最佳实践。)

根据文件类型的不同,有两种很好的处理方法。

如果文件是应用程序的一部分(如源文件),请在Docker空间之外对其进行编辑、调试和测试。一旦你确信它是正确的(通过运行单元测试和本地运行程序),docker用它构建一个新映像,然后用新映像运行一个新容器。

ed config.py
pytest
docker build -t imagename .
docker run -d -p ... --name containername imagename
...
ed config.py
pytest
docker build -t imagename .
docker stop containername
docker run -d -p ... --name containername imagename

如果文件是应用程序启动时需要注入的配置,那么docker run-v选项是将其推入的好方法。您可以直接在主机上编辑配置文件,但可能需要重新启动(或删除并重新创建)容器才能引起它的注意。

ed config.txt
docker run \
  -v $PWD/config.txt:/etc/whatever/config.txt \
  --name containername -p ... \
  imagename
...
ed config.txt
docker stop containername
docker rm containername
docker run ... imagename

 类似资料:
  • 启动一个名为nginx的Dockerized应用程序,然后在其中执行bash。令我吃惊的是,我在那个容器里找不到vim、vi甚至是yum。 请原谅我,因为我是非常新的docker和学习。 下面的命令可以用来再现问题。 我的主机是Ubuntu16.04,我使用的是最新的docker-engine和docker cli 请不要使用我的主机名(我已从15.04升级):slight_smile: 如有任何

  • 问题内容: 试图安装在vim或nano的docker内部,但我只得到这个: 退出docker并执行操作,然后我得到回复,在docker内同时执行它没有响应。 可能是什么问题呢? 问题答案: 解决方案是使用以下命令运行docker:

  • 本文向大家介绍在docker容器中安装vi命令的简单操作,包括了在docker容器中安装vi命令的简单操作的使用技巧和注意事项,需要的朋友参考一下 在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时,提示: 这时候需要敲: 这个命令的作用是:同步 /

  • 我从OS X VM docker主机创建了一个docker容器。我使用run命令创建了它,并基于image-off-docker-hub创建了容器。 我现在连接到我的容器后,它创建并登录为根和在我的容器内的命令提示符。 我试图安装homebrew,但由于某些原因,我无法运行命令来安装homebrew: 当我跑步时,我会得到一个痛击: curl:找不到命令 不知道为什么我不能在我的容器里使用卷曲。

  • 本文向大家介绍解决Docker容器没有vim命令的方法,包括了解决Docker容器没有vim命令的方法的使用技巧和注意事项,需要的朋友参考一下 发现问题 今天在尝试修改Docker容器内文件时, 发现容器内并没有vim命令, 返回了: 本篇文章就来记录下如何解决此问题. 解决方案 仍然在docker容器内部, 首先运行以下命令, 并耐心等待一会儿: 完成后运行: 等待安装完成后, 运行以下命令,