什麼是容器?

解釋

假設您正在開發一款殺手級 Web 應用程式,該應用程式具有三個主要元件 - React 前端、Python API 和 PostgreSQL 資料庫。如果您想開發此專案,您需要安裝 Node、Python 和 PostgreSQL。

您如何確保您擁有與團隊中的其他開發人員、CI/CD 系統或生產中使用的版本相同的版本?

您如何確保應用程式所需的 Python(或 Node 或資料庫)版本不受您機器上已安裝內容的影響?您如何管理潛在的衝突?

容器登場!

什麼是容器?簡單地說,容器是為應用程式的每個元件提供的隔離程序。每個元件 - 前端 React 應用程式、Python API 引擎和資料庫 - 都在自己的隔離環境中執行,完全與機器上的其他所有內容隔離。

以下列出了容器的優勢。容器是

  • 自包含的。每個容器都包含其正常執行所需的一切,不依賴主機上的任何預安裝依賴項。
  • 隔離的。由於容器是在隔離的環境中執行的,因此它們對主機和其他容器的影響很小,從而提高了應用程式的安全性。
  • 獨立的。每個容器都是獨立管理的。刪除一個容器不會影響其他容器。
  • 可移植的。容器可以在任何地方執行!在開發機器上執行的容器將與資料中心或雲中的任何地方執行的方式相同!

容器與虛擬機器 (VM)

不深入探討,VM 是一個完整的作業系統,具有自己的核心、硬體驅動程式、程式和應用程式。僅僅為了隔離單個應用程式而啟動 VM 會產生很大的開銷。

容器只是一個隔離的程序,其中包含其執行所需的所有檔案。如果您執行多個容器,它們將共享相同的核心,使您能夠在更少的基礎設施上執行更多應用程式。

一起使用 VM 和容器

通常,您會看到容器和 VM 同時使用。例如,在雲環境中,配置的機器通常是 VM。但是,與其配置一臺機器來執行一個應用程式,不如配置一臺具有容器執行時的 VM 來執行多個容器化應用程式,從而提高資源利用率並降低成本。

試一試

在本動手實踐中,您將看到如何使用 Docker Desktop GUI 執行 Docker 容器。


使用以下說明來執行容器。

  1. 開啟 Docker Desktop 並選擇頂部導航欄上的**搜尋**欄位。

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

    A screenshot of the Docker Dashboard showing the search result for welcome-to-docker Docker image
  3. 成功拉取映象後,選擇**執行**按鈕。

  4. 展開**可選設定**。

  5. 在**容器名稱**中,指定welcome-to-docker

  6. 在**主機埠**中,指定8080

    A screenshot of Docker Dashboard showing the container run dialog with welcome-to-docker typed in as the container name and 8080 specified as the port number
  7. 選擇**執行**以啟動容器。

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

檢視您的容器

您可以透過轉到 Docker 儀表板的**容器**檢視來檢視所有容器。

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

此容器執行一個 Web 伺服器,該伺服器顯示一個簡單的網站。在處理更復雜的專案時,您將在不同的容器中執行不同的部分。例如,您可以為前端、後端和資料庫執行不同的容器。

訪問前端

啟動容器時,您將容器的一個埠暴露到您的機器上。可以將其視為建立配置,使您能夠透過容器的隔離環境進行連線。

對於此容器,前端在埠8080上可訪問。要開啟網站,請選擇容器**埠(s)**列中的連結,或訪問https://:8080 在您的瀏覽器中。

Screenshot of the landing page coming from the running container

探索您的容器

Docker Desktop 允許您探索和互動容器的不同方面。親自動手嘗試一下。

  1. 轉到 Docker 儀表板中的**容器**檢視。

  2. 選擇您的容器。

  3. 選擇**檔案**選項卡以探索容器的隔離檔案系統。

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

停止您的容器

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

  1. 轉到 Docker 儀表板中的**容器**檢視。

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

  3. 選擇**操作**列中的**停止**操作。

    Screenshot of the Docker 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

此容器執行一個 Web 伺服器,該伺服器顯示一個簡單的網站。在處理更復雜的專案時,您將在不同的容器中執行不同的部分。例如,frontendbackenddatabase 的不同容器。

提示

docker ps 命令只顯示正在執行的容器。要檢視已停止的容器,請新增-a 標誌以列出所有容器:docker ps -a

訪問前端

啟動容器時,您將容器的一個埠暴露到您的機器上。可以將其視為建立配置,使您能夠透過容器的隔離環境進行連線。

對於此容器,前端在埠8080上可訪問。要開啟網站,請選擇容器**埠(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 映象了。