什麼是容器?

說明

想像您正在開發一個超級實用的網頁應用程式,它包含三個主要元件:一個 React 前端、一個 Python API,以及一個 PostgreSQL 資料庫。如果您想在這個專案上工作,就必須安裝 Node、Python 和 PostgreSQL。

您該如何確保自己使用的版本與團隊中的其他開發人員一致?或是與您的 CI/CD 系統一致?又或是與生產環境中使用的版本一致呢?

您該如何確保您的應用程式所需的 Python(或 Node 或資料庫)版本,不會受到機器上既有軟體的影響?您又該如何管理潛在的衝突呢?

這時候,容器就派上用場了!

什麼是容器?簡單來說,容器是針對應用程式每個元件所提供的隔離處理序。每個元件(React 前端應用程式、Python API 引擎和資料庫)都在各自獨立的環境中執行,與您機器上的其他所有項目完全隔離。

以下是容器的迷人之處:

  • 自給自足。每個容器都包含其運作所需的一切,無需依賴主機上預先安裝的任何相依性套件。
  • 隔離性。由於容器是在隔離狀態下執行,因此對主機和其他容器的影響降至最低,進而提高了應用程式的安全性。
  • 獨立性。每個容器皆可獨立管理。刪除一個容器不會影響其他任何容器。
  • 可移植性。容器可以在任何地方執行!在您的開發機器上執行的容器,在資料中心或雲端的任何地方都能以相同方式運作!

容器與虛擬機器 (VMs)

簡單來說,虛擬機器 (VM) 是一個完整的作業系統,擁有自己的核心、硬體驅動程式、程式和應用程式。僅為了隔離單一應用程式而啟動一個 VM,其額外開銷非常大。

容器僅是一個隔離的處理序,其中包含了它執行所需的所有檔案。如果您執行多個容器,它們都會共享相同的核心,讓您能在較少的基礎架構上執行更多的應用程式。

同時使用 VM 與容器

您經常會看到容器和 VM 被同時使用。例如,在雲端環境中,佈建的機器通常是 VM。然而,與其佈建一台機器來執行單一應用程式,現在可以透過具有容器執行環境的 VM 來執行多個容器化應用程式,從而提高資源利用率並降低成本。

試試看

在這個實作練習中,您將了解如何使用 Docker Desktop GUI 來執行一個 Docker 容器。

請依照下列指示執行容器。

  1. 開啟 Docker Desktop 並選擇上方導覽列中的搜尋 (Search) 欄位。

  2. 在搜尋輸入框中指定 welcome-to-docker,然後選擇拉取 (Pull) 按鈕。

    A screenshot of the Docker Desktop Dashboard showing the search result for welcome-to-docker Docker image
  3. 映像檔成功拉取後,請選擇執行 (Run) 按鈕。

  4. 展開選用設定 (Optional settings)

  5. 容器名稱 (Container name) 中,指定 welcome-to-docker

  6. 主機連接埠 (Host port) 中,指定 8080

    A screenshot of Docker Desktop Dashboard showing the container run dialog with welcome-to-docker typed in as the container name and 8080 specified as the port number
  7. 選擇執行 (Run) 來啟動您的容器。

恭喜!您剛剛執行了您的第一個容器!🎉

查看您的容器

您可以透過進入 Docker Desktop 儀表板的容器 (Containers) 檢視畫面來查看所有的容器。

Screenshot of the container view of the Docker Desktop GUI showing the welcome-to-docker container running on the host port 8080

此容器執行了一個網頁伺服器,用來顯示一個簡單的網站。當您處理更複雜的專案時,您將會在不同的容器中執行不同的部分。例如,您可能會為前端、後端和資料庫分別執行不同的容器。

存取前端

當您啟動容器時,您將容器的一個連接埠曝露到了您的機器上。將此視為建立配置,讓您可以透過容器的隔離環境進行連線。

對於此容器,前端可透過連接埠 8080 存取。若要開啟網站,請選取容器連接埠 (Port(s)) 欄位中的連結,或在瀏覽器中前往 https://:8080

Screenshot of the landing page coming from the running container

探索您的容器

Docker Desktop 讓您能夠探索並與容器的不同層面進行互動。親自試試看吧。

  1. 前往 Docker Desktop 儀表板中的容器 (Containers) 檢視畫面。

  2. 選取您的容器。

  3. 選取檔案 (Files) 頁籤,以探索您容器的隔離檔案系統。

    Screenshot of the Docker Desktop Dashboard showing the files and directories inside a running container

停止您的容器

docker/welcome-to-docker 容器將持續執行,直到您將其停止。

  1. 前往 Docker Desktop 儀表板中的容器 (Containers) 檢視畫面。

  2. 找到您想要停止的容器。

  3. 動作 (Actions) 欄位中,選取停止 (Stop) 動作。

    Screenshot of the Docker Desktop Dashboard with the welcome container selected and being prepared to stop

請依照下列指示,使用 CLI 執行容器

  1. 開啟您的 CLI 終端機,並使用 docker run 指令啟動容器

    $ docker run -d -p 8080:80 docker/welcome-to-docker
    

    此指令的輸出即為完整的容器 ID。

恭喜!您剛剛啟動了您的第一個容器!🎉

查看您正在執行的容器

您可以使用 docker ps 指令來驗證容器是否已啟動並執行中

docker ps

您將會看到類似下方的輸出

 CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                      NAMES
 a1f7a4bb3a27   docker/welcome-to-docker   "/docker-entrypoint.…"   11 seconds ago   Up 11 seconds   0.0.0.0:8080->80/tcp       gracious_keldysh

此容器執行了一個網頁伺服器,用來顯示一個簡單的網站。當您處理更複雜的專案時,您將會在不同的容器中執行不同的部分。例如,為 frontend(前端)、backend(後端)和 database(資料庫)分別執行不同的容器。

提示

docker ps 指令僅會顯示執行中的容器。若要查看已停止的容器,請加上 -a 旗標來列出所有容器:docker ps -a

存取前端

當您啟動容器時,您將容器的一個連接埠曝露到了您的機器上。將此視為建立配置,讓您可以透過容器的隔離環境進行連線。

對於此容器,前端可透過連接埠 8080 存取。若要開啟網站,請選取容器連接埠 (Port(s)) 欄位中的連結,或在瀏覽器中前往 https://:8080

Screenshot of the landing page of the Nginx web server, coming from the running container

停止您的容器

docker/welcome-to-docker 容器將持續執行,直到您將其停止。您可以使用 docker stop 指令來停止容器。

  1. 執行 docker ps 以取得容器的 ID

  2. 將容器 ID 或名稱提供給 docker stop 指令

    docker stop <the-container-id>
    
提示

當透過 ID 參考容器時,您不需要提供完整的 ID,只需要提供足以使其具有唯一性的 ID 長度即可。舉例來說,上一個容器可以透過執行下列指令來停止

docker stop a1f

其他資源

下列連結提供了有關容器的進階指南

下一步

既然您已經學會了 Docker 容器的基礎知識,現在是時候了解 Docker 映像檔了。

什麼是映像檔?
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.