gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:30:55 26 4
gpt4 key购买 nike

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

docker exec -it mysolr /bin/bash

我不能在 solr 容器中使用 vi/vim:
bash: vim: command not found

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

最佳答案

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

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

有两种很好的方法可以解决这个问题,具体取决于它是什么类型的文件。

如果文件是 应用程序的一部分 ,就像源文件一样,在 Docker 空间之外对其进行编辑、调试和测试。一旦你确信它是正确的(通过运行单元测试和在本地运行程序),docker build带有它的新图像,以及 docker run带有新图像的新容器。

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

如果文件是 配置需要在应用程序启动时注入(inject), 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

关于docker - 无法在 docker 容器中使用 vi 或 vim 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56506757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com