什麼是容器?
說明
想像您正在開發一個強大的網路應用程式,它有三個主要元件:React 前端、Python API 和 PostgreSQL 資料庫。如果您想開發這個專案,您必須安裝 Node、Python 和 PostgreSQL。
您如何確保您與團隊中其他開發人員使用相同的版本?或者您的 CI/CD 系統?或者生產環境中使用的版本?
您如何確保您的應用程式所需的 Python(或 Node 或資料庫)版本不受您機器上已安裝軟體的影響?您如何管理潛在的衝突?
認識容器!
什麼是容器?簡而言之,容器是您應用程式每個元件的隔離程序。每個元件(前端 React 應用程式、Python API 引擎和資料庫)都在其自身的隔離環境中執行,與您機器上的其他所有東西完全隔離。
以下是它們的優點。容器具有以下特性:
- 自包含。每個容器都包含其運作所需的一切,不依賴主機上任何預先安裝的相依性。
- 隔離。由於容器在隔離環境中執行,因此它們對主機和其他容器的影響最小,從而提高了應用程式的安全性。
- 獨立。每個容器都獨立管理。刪除一個容器不會影響其他容器。
- 可移植。容器可以在任何地方運行!在您的開發機器上運行的容器,在資料中心或雲端的任何地方都能以相同的方式運作!
容器與虛擬機器 (VM) 的比較
簡而言之,虛擬機器是一個完整的作業系統,擁有自己的核心、硬體驅動程式、程式和應用程式。僅為了隔離單一應用程式而啟動虛擬機器會產生大量的開銷。
容器只是一個隔離的程序,其中包含運行所需的所有檔案。如果您運行多個容器,它們都共用同一個核心,讓您可以在更少的基礎架構上運行更多應用程式。
同時使用虛擬機器和容器
您經常會看到虛擬機器和容器一起使用。例如,在雲端環境中,佈建的機器通常是虛擬機器。但是,與其佈建一台機器來運行一個應用程式,不如使用具有容器運行環境的虛擬機器來運行多個容器化應用程式,從而提高資源利用率並降低成本。
試用看看
在此實作練習中,您將瞭解如何使用 Docker Desktop GUI 運行 Docker 容器。
請按照以下說明運行容器。
打開 Docker Desktop 並選擇頂部導覽列上的「**搜尋**」欄位。
在搜尋輸入中指定 `welcome-to-docker`,然後選擇「**拉取**」按鈕。
成功拉取映像檔後,選擇「**運行**」按鈕。
展開「**選用設定**」。
在「**容器名稱**」中,指定 `welcome-to-docker`。
在「**主機埠**」中,指定 `8080`。
選擇「**運行**」以啟動您的容器。
恭喜!您剛剛運行了您的第一個容器! 🎉
檢視您的容器
您可以前往 Docker Desktop 儀表板的「**容器**」檢視來檢視所有容器。


此容器運行一個顯示簡單網站的網路伺服器。處理更複雜的專案時,您將在不同的容器中運行不同的部分。例如,您可能會為前端、後端和資料庫運行不同的容器。
存取前端
啟動容器時,您將容器的其中一個埠公開到您的機器上。您可以將此視為建立設定,讓您可以透過容器的隔離環境進行連線。
對於此容器,前端可透過埠 `8080` 存取。要打開網站,請選擇容器「**埠**」欄位中的連結,或在您的瀏覽器中瀏覽 http://localhost:8080。


探索您的容器
Docker Desktop 可讓您探索容器的不同方面並與之互動。親自試用看看。
前往 Docker Desktop 儀表板中的「**容器**」檢視。
選擇您的容器。
選擇「**檔案**」索引標籤以探索容器的隔離檔案系統。
停止您的容器
`docker/welcome-to-docker` 容器會持續運行,直到您將其停止為止。
前往 Docker Desktop 儀表板中的「**容器**」檢視。
找到您要停止的容器。
在「**動作**」欄位中選擇「**停止**」動作。
按照說明使用 CLI 運行容器
打開您的 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。


停止您的容器
`docker/welcome-to-docker` 容器會持續運行,直到您將其停止為止。您可以使用 `docker stop` 命令停止容器。
運行 `docker ps` 以取得容器的 ID
將容器 ID 或名稱提供給 `docker stop` 命令
docker stop <the-container-id>
**提示**
使用 ID 引用容器時,您不需要提供完整的 ID。您只需要提供足夠的 ID 來使其唯一即可。例如,可以透過執行以下指令來停止先前的容器
docker stop a1f
其他資源
以下連結提供容器的額外指南
後續步驟
您現在已經學習了 Docker 容器的基本知識,接下來該學習 Docker 映像檔了。