作者:IvanCodes
日期:2025年8月2日
專欄:Docker教程
一、Portainer 安裝與基礎使用教程
Portainer 是一個輕量級、功能強大的Docker圖形化管理界面 (GUI)。它能讓你通過簡單的Web界面來管理和監控你的Docker容器、鏡像、卷、網絡等資源,極大降低了Docker的命令行操作門檻。
1.Portainer 安裝部署
前提條件:
你的服務器 (例如 hadoop01
) 必須已經安裝并正在運行 Docker 服務。
步驟 1:在主機上創建用于持久化 Portainer 數據的目錄
為了防止 Portainer 容器被刪除或重建后丟失其配置數據 (如用戶、環境設置等),我們將在主機文件系統上創建一個目錄,并將其直接掛載到容器中。這種方式稱為綁定掛載 (bind mount)。
在 hadoop01
(或其他你打算安裝Portainer的Docker主機) 上執行:
mkdir -p /opt/portainer_data
說明:我們選擇在 /opt
目錄下創建 portainer_data
文件夾,你可以根據自己的習慣選擇其他路徑。
步驟 2:下載并運行 Portainer 容器
執行以下命令來拉取 Portainer Community Edition (CE) 鏡像并啟動容器。
在 hadoop01
上執行:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer_data:/data portainer/portainer-ce:latest
命令參數解析:
-d
: 后臺運行容器 (detached mode)。
-p 8000:8000
: 將主機的8000
端口映射到容器的8000
端口 (用于隧道代理,高級功能)。
-p 9443:9443
: 將主機的9443
端口 (HTTPS) 映射到容器的9443
端口。這是主要的訪問端口。
--name portainer
: 給容器命名為portainer
。
--restart=always
: 設置容器總是自動重啟,除非手動停止。這保證了Docker服務重啟后Portainer也會自動啟動。
-v /var/run/docker.sock:/var/run/docker.sock
: 這是關鍵一步。它將主機的Docker套接字文件掛載到容器內部,允許Portainer容器與主機的Docker守護進程通信,從而管理其他容器。
-v /opt/portainer_data:/data
: (綁定掛載) 將我們在主機上創建的/opt/portainer_data
目錄掛載到容器的/data
目錄。Portainer的所有配置都會直接寫入到這個主機目錄中,實現了數據的持久化。
portainer/portainer-ce:latest
: 指定要運行的鏡像。
2.Portainer 基礎使用教程
步驟 1:首次訪問與創建管理員賬戶
- 安裝完成后,在你的瀏覽器中訪問 Portainer 的 Web 界面。地址為
https://<你的服務器IP>:9443
(例如https://192.168.121.131:9443
)。 - 由于使用的是自簽名SSL證書,瀏覽器可能會提示“不安全”,請選擇“高級”并繼續訪問。
- 首次訪問時,Portainer 會要求你創建一個管理員 (admin) 用戶。請設置一個強度足夠的密碼。
圖注:Portainer 首次訪問時,會引導您創建管理員賬戶。
步驟 2:連接到本地 Docker 環境
- 創建管理員并登錄后,Portainer 會自動檢測到它可以通過
/var/run/docker.sock
連接到本地的 Docker 環境。 - 你通常會看到一個 “Get Started” 頁面,上面有一個管理本地 Docker 環境的選項。點擊它。
步驟 3:進入環境儀表盤 (Home / Environments)
- 連接成功后,你將進入環境儀表盤。這里會列出所有Portainer管理的環境。
- 默認情況下,你會看到一個名為
local
的環境,代表當前主機的Docker。
圖注:Portainer 的主儀表盤,列出了名為 local
的本地 Docker 環境,并展示了其基本信息。
步驟 4:探索 Docker 資源 (簡單使用)
- 查看容器:在環境儀表盤 (您的第二張圖所示界面),點擊
local
環境那一行藍色的 “Live connect” 按鈕或環境名稱本身,即可進入該環境的詳細儀表盤。
- 在左側菜單欄點擊 “Containers”。你會看到所有正在運行和已停止的容器列表。
- 管理其他資源:同樣地,你可以通過左側菜單輕松地查看和管理 Images (鏡像)、Volumes (卷)、Networks (網絡) 等。
二、Docker 鏡像原理深入解析
Docker 鏡像是 Docker 的核心。它是一個輕量、獨立、可執行的軟件包,包含了運行某個應用所需的一切:代碼、運行時、庫、環境變量和配置文件。
1.Docker 鏡像原理:分層理解
Docker 鏡像的最大特點就是它采用了分層存儲的結構。一個鏡像不是一個單一的文件,而是由一系列只讀 (read-only) 的層 (layers) 堆疊而成。
- 層的來源:鏡像的每一層都對應
Dockerfile
中的一條指令。 - 層的特性:
- 只讀: 鏡像的所有層都是只讀的,無法被修改。
- 共享: 如果多個鏡像都基于相同的父層構建,那么這些鏡像在主機上會共享這些相同的層,節省了大量的磁盤空間。
2.聯合文件系統
為了管理這些層并呈現一個統一的文件系統視圖,Docker 使用了聯合文件系統技術 (如 Aufs, OverlayFS, Btrfs 等)。它的核心功能是將多個不同的目錄 (即鏡像的各個層) “聯合掛載” 到同一個掛載點上。從容器內部看,你看不到這些分層,只能看到一個完整、正常的文件系統。
3.加載原理:從鏡像到容器
這是理解 Docker 運行機制的關鍵。
- 啟動容器 (
docker run
): 當你從一個鏡像啟動容器時,Docker 并不會復制整個鏡像。相反,它會保留所有只讀的鏡像層不變,并在最頂層添加一個新的、薄薄的、可寫層 (Writable Layer),也稱為 容器層 (Container Layer)。 - 寫時復制:
- 讀操作: 當容器需要讀取文件時,它會從上到下(從可寫層到最底部的基礎層)逐層查找。
- 寫操作 (修改): 當容器需要修改一個已存在的文件時 (該文件位于下方的只讀層),UFS 首先將該文件從只讀層復制到頂部的可寫層,然后對可寫層中的這個副本進行修改。
- 寫操作 (新建): 當容器創建新文件時,它們直接被創建在頂部的可寫層中。
- 容器的生命周期: 容器運行期間的所有變化都保存在這個可寫層。當你刪除容器 (
docker rm
)時,只有這個頂部的可寫層會被刪除。