在Docker容器內執行 vi 編輯器 | Baeldung

banq發表於2021-08-14

在本教程中,我們將學習如何在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 映象大小會很小。
 

相關文章