什麼是容器?

說明

想像您正在開發一個強大的網路應用程式,它有三個主要元件:React 前端、Python API 和 PostgreSQL 資料庫。如果您想開發這個專案,您必須安裝 Node、Python 和 PostgreSQL。

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

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

認識容器!

什麼是容器?簡而言之,容器是您應用程式每個元件的隔離程序。每個元件(前端 React 應用程式、Python API 引擎和資料庫)都在其自身的隔離環境中執行,與您機器上的其他所有東西完全隔離。

以下是它們的優點。容器具有以下特性:

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

容器與虛擬機器 (VM) 的比較

簡而言之,虛擬機器是一個完整的作業系統,擁有自己的核心、硬體驅動程式、程式和應用程式。僅為了隔離單一應用程式而啟動虛擬機器會產生大量的開銷。

容器只是一個隔離的程序,其中包含運行所需的所有檔案。如果您運行多個容器,它們都共用同一個核心,讓您可以在更少的基礎架構上運行更多應用程式。

同時使用虛擬機器和容器

您經常會看到虛擬機器和容器一起使用。例如,在雲端環境中,佈建的機器通常是虛擬機器。但是,與其佈建一台機器來運行一個應用程式,不如使用具有容器運行環境的虛擬機器來運行多個容器化應用程式,從而提高資源利用率並降低成本。

試用看看

在此實作練習中,您將瞭解如何使用 Docker Desktop GUI 運行 Docker 容器。


請按照以下說明運行容器。

  1. 打開 Docker Desktop 並選擇頂部導覽列上的「**搜尋**」欄位。

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

    A screenshot of the Docker Desktop Dashboard showing the search result for welcome-to-docker Docker image
  3. 成功拉取映像檔後,選擇「**運行**」按鈕。

  4. 展開「**選用設定**」。

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

  6. 在「**主機埠**」中,指定 `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. 選擇「**運行**」以啟動您的容器。

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

檢視您的容器

您可以前往 Docker Desktop 儀表板的「**容器**」檢視來檢視所有容器。

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

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

存取前端

啟動容器時,您將容器的其中一個埠公開到您的機器上。您可以將此視為建立設定,讓您可以透過容器的隔離環境進行連線。

對於此容器,前端可透過埠 `8080` 存取。要打開網站,請選擇容器「**埠**」欄位中的連結,或在您的瀏覽器中瀏覽 http://localhost:8080

Screenshot of the landing page coming from the running container

探索您的容器

Docker Desktop 可讓您探索容器的不同方面並與之互動。親自試用看看。

  1. 前往 Docker Desktop 儀表板中的「**容器**」檢視。

  2. 選擇您的容器。

  3. 選擇「**檔案**」索引標籤以探索容器的隔離檔案系統。

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

停止您的容器

`docker/welcome-to-docker` 容器會持續運行,直到您將其停止為止。

  1. 前往 Docker Desktop 儀表板中的「**容器**」檢視。

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

  3. 在「**動作**」欄位中選擇「**停止**」動作。

    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` 存取。要打開網站,請選擇容器「**埠**」欄位中的連結,或在您的瀏覽器中瀏覽 http://localhost: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 映像檔了。