3

在Docker容器内运行 vi 编辑器 | Baeldung

 3 years ago
source link: https://www.jdon.com/57076
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
在Docker容器内运行 vi 编辑器

在本教程中,我们将学习如何在Docker容器中使用vi命令。要完全理解本教程,需要对 Linux 和 Docker 有基本的了解。我们将研究四种类型的 Linux 发行版,即 Ubuntu、Debian、CentOS 和 Fedora。

Docker 是一个容器化平台,允许将我们的应用程序及其依赖项打包到一个单元中。

作为最佳实践,我们应该保持 Docker 镜像的大小较小。因此,我们只在 Docker 容器中安装那些运行我们的应用程序所必需的包。

Ubuntu/Debian

Ubuntu 和 Debian 的官方 Docker 镜像不包含vim包。现在,让我们在容器内手动安装vim包:

$ docker exec -it ubuntu bash -c "apt-get update && apt-get install -y vim"

在这里,首先,我们使用命令apt-get update 更新包,然后使用命令apt-get install -y vim安装vim包:

$ docker exec -it ubuntu bash -c "apt list --installed | grep vim"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

vim-common/focal,now 2:8.1.2269-1ubuntu5 all [installed,automatic]
vim-runtime/focal,now 2:8.1.2269-1ubuntu5 all [installed,automatic]
vim/focal,now 2:8.1.2269-1ubuntu5 amd64 [installed]

所有这些命令也适用于 Debian Docker 容器。

 CentOS/Fedora

CentOS 和 Fedora 的官方 Docker 映像包括vim 包的最小安装, 它能够执行所有基本的文件编辑操作。

现在让我们使用最新的 Docker 镜像启动一个 centos Docker 容器。同样,我们将使用命令rpm -qa |验证容器内的vim包是否可用。

$ docker run -itd --name centos centos:latest
0a6b12547c61ce6859f48f56180d758692bf481dd854412f29c94f0cb1a3d0ca
$ docker exec -it centos bash -c "rpm -qa | grep vim"
vim-minimal-8.0.1763-15.el8.x86_64

如果需要,我们可以安装完整的vim包:

$ docker exec -it centos bash -c "yum update -y && yum install -y vim"

更新命令将更新包到他们的最新版本。最后,我们将使用yum install -y vim安装vim包。这两个命令都将在 Docker 容器内执行。

同样,让我们​​验证安装在容器内的所有vim包:

$ docker exec -it centos bash -c "rpm -qa | grep vim"
vim-filesystem-8.0.1763-15.el8.noarch
vim-minimal-8.0.1763-15.el8.x86_64
vim-common-8.0.1763-15.el8.x86_64
vim-enhanced-8.0.1763-15.el8.x86_64

本节中讨论的所有命令也适用于 Fedora Docker 容器。

使用vi编辑器创建或编辑文件

现在我们已经在 Docker 容器中安装了vim包,我们可以使用vi命令来创建和编辑文件:

$ docker exec -it centos bash
$ vi /baeldung.txt

在这里,我们在 Docker 容器中启动一个交互式 Bash shell,然后在/目录中创建baeldung.txt文件。如果baeldung.txt文件已经存在,它将在vi编辑器中打开该文件。

在这个例子中,我们应该注意到控制将保留在 Docker 容器内。在此之后执行的任何操作都将在 Docker 容器内执行。

让我们看看使用单个命令执行相同操作的另一种方法:

$ docker exec -it centos bash -c "vi /baeldung.txt"

这一次,控制权将保留在主机上。在此之后执行的任何操作都将在主机上执行。

应该避免在 Docker 镜像中使用像vim这样用于编辑文件的包。

即使出于任何原因,我们想要编辑 Docker 容器内的任何文件,我们也应该使用Docker 卷

使用 Docker 卷,我们可以将源代码目录挂载到主机上的特定目录。这样,主机上存在的文件内所做的任何更改都将反映 Docker 容器内的更改。

或者使用nano/vim-tiny:该VIM包需要大约50 MB用于安装的磁盘空间。作为替代方案,我们还可以使用nano或vim-tiny(仅在 Ubuntu 中可用)之类的软件包进行文件编辑。这些软件包只需要几 KB 的磁盘空间。因此,我们的 Docker 镜像大小会很小。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK