如何在我 shell 到 Docker 容器後編輯檔案?


在建立 Docker 映象時,您會為映象指定構建上下文。映象構建上下文包含您希望包含在從該映象建立的容器中的所有檔案。這包括應用程式的原始碼、Dockerfile、其他系統檔案等。一旦您使用 Docker build 命令指定了構建上下文的路徑,您就可以構建映象。

此外,您可以在 Dockerfile 中使用 COPY 指令,甚至可以使用 Docker cp 命令將容器內的檔案從本地機器複製到容器中。但是,如果您想編輯容器內的檔案怎麼辦?簡單來說,可能存在您已訪問容器的 shell 或 bash 並想要編輯容器內檔案的這種情況。在本文中,我們將詳細討論如何做到這一點。

首先,您需要首先建立一個映象,以便在您建立與該映象關聯的容器時,可以訪問容器內的文字檔案。有兩種方法可以做到這一點。您可以直接在 Dockerfile 中使用 COPY 指令,或直接在容器內建立檔案。

讓我們建立一個並執行一個 Ubuntu 容器。

$ docker run -it --name=mycont ubuntu /bin/bash

在上面的 Docker run 命令中,我們使用了 -i 和 -t 選項,它們分別代表互動式和偽終端。這些選項允許我們透過提供輸入來與容器進行互動。接下來,我們使用了 /bin/bash 命令,該命令將設定一個預設命令,以便在容器啟動後立即執行。因此,當我們執行上述命令時,我們將能夠訪問 ubuntu 容器的 bash。

您甚至可以透過列出所有活動容器來驗證容器是否正在積極執行。保持此容器 bash 在終端中執行,開啟一個新終端並執行以下命令。

$ docker ps

您會發現您建立的 mycont 容器正在積極執行。

一旦您能夠訪問容器的 bash,就可以像與 Linux/Ubuntu 終端互動一樣與之互動。要建立檔案,我們可以使用 touch 命令

您可以在容器的 bash 中執行此命令。

# touch tutorialspoint.txt

要驗證檔案的建立,您可以列出所有內容。

# ls

如果要編輯容器內的檔案,則需要訪問檔案編輯器。您可以使用 nano 或在容器內安裝 vim 包。在執行此操作之前,請確保更新容器

# apt-get -y update

現在,您可以使用以下命令安裝 vim 包。

# apt-get -y install vim

現在,使用 vim 編輯器開啟檔案。您可以使用以下命令執行此操作。

# vi tutorialspoint.txt

要在檔案中插入內容,您需要呼叫插入模式。只需按鍵盤上的 i 鍵。接下來,輸入您想要的內容。要儲存內容,請按 Esc 鍵退出插入模式,鍵入 :q,然後按 Enter 儲存並退出。

要進行驗證,請使用 cat 命令列印檔案中的內容。

# cat tutorialspoint.txt

透過這種方式,您可以使用任何您選擇的編輯器來編輯容器內的檔案。

如果您已經在後臺運行了容器,則甚至可以使用 Docker exec 命令訪問容器的 bash。

$ docker exec -it <container-name> bash

重複上述步驟以建立和編輯檔案。

另一種方法,也可能是更好的方法,是使用 Dockerfile 直接安裝 vim 編輯器。您可以使用 RUN 指令執行此操作。讓我們來看看。請考慮以下 Dockerfile。

FROM ubuntu:latest
WORKDIR /app
COPY . .
RUN ["apt-get", "-y", "update"]
RUN ["apt-get", "install", "-y", "vim"]

預設情況下,當您拉取 Ubuntu 映象時,您不會找到任何文字編輯器。因此,您需要手動安裝它。COPY 指令會將容器預設工作目錄中的所有檔案從主機上的當前目錄複製到容器中。一旦您對該 Dockerfile 執行了 Docker build 命令來構建映象,您就可以使用 Docker run 命令執行容器。

$ docker run -it --name=mycont <image name> bash

這樣做,您將能夠訪問容器的 bash,並且已經安裝了 vim 編輯器。

To conclude, in this article, we discussed how to create and edit a file inside a Docker container if you have access to the container’s shell. You can use the Docker run command if you don’t have a container or the Docker exec command if you already have a container running. You can install any text editor that you prefer.

更新於: 2021年8月6日

1K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告