如何使用 Docker 容器

如何使用 Docker 容器
一個人在筆記型電腦上編程的照片。

容器是每個 Docker 安裝的命脈。它們作為 Docker 平台的基礎,可讓您在電腦上執行服務,而無需擔心依賴性和版本衝突。在這裡,我們向您展示使用 Docker CLI 工具建立、管理和自訂 Docker 容器的基礎知識。

如何找到並提取 Docker 映像

Docker 容器是一種特殊類型的軟體環境,可讓您獨立於原始系統的其餘部分執行程式。為了實現這一目標,Docker 使用「軟體映像」。這些是程式的靜態副本,可作為容器啟動的基礎。

鏡像和容器之間的這種區別允許您以任何必要的方式重新建立和調整您的軟體。例如,您可以擁有一個諸如“httpd”之類的圖像,但從中啟動兩個不同的容器:“website1”和“website2”。

查看新 Docker 映像最簡單的方法是使用search子命令:

終端機突出顯示來自 CLI 工具的 httpd Docker 映像。
顯示來自 Docker Hub 網站的 httpd Docker 映像的螢幕截圖。

若要將映像下載到您的系統,請執行以下命令:

使用下列子命令確認您已將新映像正確新增至系統images

終端機突出顯示系統上已安裝的 httpd Docker 映像。

使用 Dockerfile 建置新映像

除了從 Docker Hub 提取預先建置的映像之外,您還可以直接從 Docker CLI 建置映像。如果您想要建立現有軟體包的自訂版本或將新應用程式移植到 Docker,這非常有用。

為此,首先在主目錄中為建置檔案建立一個資料夾:

使用您最喜歡的文字編輯器建立一個新的 Dockerfile:

將以下程式碼行貼到新的 Dockerfile 中:

顯示自訂 Nginx 映像的範例 Dockerfile 配置的終端。

建立一個「sample-site」資料夾,然後複製或建立一個基本的 HTML 網站:

儲存新的 Dockerfile,然後執行以下命令在您的系統上建置它:

檢查您的新 Docker 映像是否存在於 Docker 映像清單中:

終端機突出顯示從 build 子命令產生的自訂圖像。

使用現有容器建置新鏡像

Docker CLI 工具還可以從系統中目前存在的容器建立新映像。如果您已經在現有環境中工作並且想要根據當前設定建立新映像,這非常有用。

為此,請確保您的容器目前未運行:

執行commit子命令,後面接著容器的名稱,然後提供新 Docker 映像的名稱:

顯示從 Docker 容器建立新映像的 commit 子命令的終端。

透過執行來確認您的新 Docker 映像位於您的系統中docker images

終端機突出顯示系統中安裝的 Docker 容器中的新自訂映像。

如何運作和停止 Docker 容器

準備好 Docker 映像後,您現在可以開始使用它來建立您的第一個容器。為此,請使用run子命令,後面跟著要執行的映像的名稱:

雖然這適用於運行您的第一個 Docker 容器,但這樣做將接管您目前的 shell 會話。若要在背景運行容器,請在子命令-d後面附加標誌run

run子命令還可以接受許多附加標誌,這些標誌可以更改新 Docker 容器的行為。例如,該--name標誌允許您向容器添加可自訂的名稱:

另一方面,您可以使用該--publish標誌來重新導向可以存取 Docker 容器的網路連接埠。如果您不希望容器接管特權端口,這主要有用:

顯示 Web 瀏覽器開啟由自訂 Docker 容器託管的網站的螢幕截圖。

您可以透過執行以下命令來檢查系統中目前正在運行的所有 Docker 容器:

run子命令類似,ps也可以接受一些標誌來修改其行為方式。例如,若要查看目前關閉的容器,請使用下列標誌-a

若要關閉正在執行的容器,請使用stop子命令,後面接著容器 ID 或 Docker 容器的名稱:

顯示關閉目前運行的 Docker 容器的程序的終端。

您可以透過重新執行子命令來重新啟動已停止的任何容器start

暫停和終止 Docker 容器

Docker CLI 工具還允許您暫時暫停和終止正在執行的容器程序。如果您正在排除 Docker 設定的問題並且想要隔離或停止行為不當的容器,這可能會很有用。

首先運行docker ps以列出系統中所有正在運行的容器。

找到您要管理的容器的 ID 或名稱。

突出顯示系統中目前運行的自訂 Docker 容器的終端。

運行pause子命令,後面接著要暫時掛起的容器的名稱:

您可以透過執行子命令來恢復掛起的進程unpause

若要停止行為不當的進程,請執行kill子命令,後面跟著容器的名稱:

如何檢查 Docker 容器

了解容器的複雜細節是維護 Docker 堆疊健康的重要組成部分。它允許您快速查看任何潛在問題,這可能是修復和重做整個部署之間的差異。

若要查看 Docker 容器的概述,請執行inspect子命令:

執行此操作將列印一個長 JSON 字串,描述整個容器的當前狀態。您可以透過將輸出管道傳輸到 jq 或使用內建-f標誌後面要列印的 JSON 物件來縮小範圍:

一個終端,顯示正在執行的 Docker 容器上的檢查子命令的過濾器標誌。

將容器日誌列印到終端

除此之外,您還可以追蹤並列印任何目前正在執行的 Docker 容器的日誌。如果您想檢查服務目前的行為方式並查看它返回 STDOUT 的輸出,這會很有用。

為此,請執行 Logs 子命令,後面跟著容器的名稱:

您也可以執行帶有該標誌的logs子命令--follow來建立Docker服務的連續日誌。這類似於tail -f在 UNIX 管道末端運行:

顯示 Docker 容器的連續日誌的終端。

與其他子命令類似,您還可以新增各種標誌來自訂 Docker 容器日誌的輸出。例如,此--timestamps標誌會為容器傳送至其 STDOUT 的每個訊息新增詳細的時間戳記:

--details標誌甚至會列印您為目前 Docker 容器設定的環境變數。同時,該--since標誌可讓您僅顯示特定時間點之後發生的日誌:

顯示目前正在運行的 Docker 容器的更詳細日誌輸出的終端。

如何客製化 Docker 容器

從本質上講,Docker 容器是在當前系統之上運行的 Linux 的小型精簡版本。這意味著,與虛擬機器類似,可以存取和檢索容器內的資料。

若要將本機檔案從主機複製到容器,請執行cp下列子命令:

有時,您還需要透過打開容器內的外殼來「步入」容器。這樣您就可以編輯檔案、安裝二進位檔案並根據您的需求自訂它們:

顯示下降到容器根 shell 的過程的終端。

例如,現在您可以編輯“index.html”並為其中的網站建立主頁。

顯示複製到 Docker 容器根 shell 中的 HTML 檔案的終端。

Ctrl按+Dexit在終端上運行來退出容器的外殼。

終端機突出顯示 Docker 容器根 shell 的退出命令。

如何刪除 Docker 容器和映像

刪除未使用的 Docker 容器和映像是部署常規管理的重要組成部分。這樣做可以讓您從伺服器中刪除不必要的文件,從長遠來看節省儲存空間。

在刪除容器之前,請確保先將其停止:

現在,使用子命令刪除容器rm

透過執行確認您已正確刪除舊的 Docker 容器docker ps -a

顯示所有可用 Docker 容器(包括目前已關閉的容器)的終端。

從 Docker 部署中刪除原始 Docker 映像:

終端機突出顯示從系統中刪除 Docker 映像的輸出。

檢查您是否已透過執行正確刪除原始 Docker 映像docker images

顯示更新後的 Docker 映像清單的終端。

學習如何建立、管理和刪除 Docker 容器只是您可以使用 Linux 伺服器執行的部分操作。

圖片來源:Shamin Haky,來自 Unsplash。所有修改和螢幕截圖均由 Ramces Red 進行。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *