Docker - 配置 Portainer



Portainer 是一款輕量級的管理 UI,可以輕鬆管理 Docker 環境。它提供了一個直觀的介面,使用者可以透過它輕鬆部署、管理和除錯容器化應用程式。使用 Portainer,您可以監控 Docker 設定,並從集中位置管理容器、映象、卷和網路。

使用 Docker 執行 Portainer 不僅簡化了設定,而且確保它受益於 Docker 的可移植性、可擴充套件性和易用性。透過將 Portainer 放入 Docker 容器中,您可以為自己建立一個獨立的環境,該環境易於部署和維護,非常適合管理您的 Docker 基礎設施。

Docker 化 Portainer 的先決條件

在 Docker 化 Portainer 之前,請確保已滿足以下先決條件:

  • 安裝 Docker - 確保您的系統中已安裝 Docker。您可以從Docker 官方網站下載並安裝 Docker。
  • Docker 基礎知識 - 瞭解 Docker 的基本概念,例如映象、容器和 Dockerfile 的概述。
  • 訪問終端 - 您必須開啟一個命令列終端來執行 Docker 命令。
  • 網際網路連線 - 在本文中,我們將使用 Docker Hub 上提供的 Portainer 官方映象。需要網際網路連線,以便 Docker 可以拉取此映象。
  • Docker Hub 帳戶 - 對於希望將自定義映象推送到登錄檔的使用者,另一個推薦的資源是 Docker Hub 帳戶。

在完成所有這些先決條件後,您現在就可以開始設定您的 Portainer 專案並在此處將其 Docker 化。

設定 Portainer 專案

讓我們建立一個基本專案結構。此設定將幫助我們組織檔案和配置,並且可以更輕鬆地管理和版本控制 Portainer 部署。

步驟 1:建立專案目錄

讓我們為我們的 Portainer 專案建立一個專用目錄。此目錄將包含所有必要的檔案,例如 Dockerfile 和任何其他配置檔案。

$ mkdir portainer-project
$ cd portainer-project

步驟 2:初始化版本控制和 Docker

接下來,您可以在專案目錄和 Docker 檔案中初始化一個 Git 儲存庫。

$ git init
$ docker init
Initialize Version Control and Docker

步驟 3:建立配置檔案

根據您的需要,您還可以建立一個配置檔案來自定義 Portainer 部署。例如,您可以新增環境變數或指定一個卷用於持久資料儲存。

建立 config.yml 檔案(如果需要) -

$ touch config.yml

目前,您可以將其保留為空或根據需要新增配置。

現在我們已經設定了專案目錄,讓我們概述 Portainer 專案所需的結構和依賴項。

portainer-project/

│

├── Dockerfile

├── config.yml      # Optional: Configuration file for Portainer

└── README.md       # Optional: Documentation for your project

在本地執行 Portainer

在使用自定義 Dockerfile 將 Portainer Docker 化之前,讓我們首先使用 Docker 在本地執行 Portainer。這將確保 Portainer 正確執行,併為以後建立 Dockerfile 提供良好的基線。

步驟 1:從 Docker Hub 拉取 Portainer 映象

我們將首先從 Docker Hub 拉取官方 Portainer 映象。此映象已包含執行 Portainer 所需的一切。

$ docker pull portainer/portainer-ce
Pull the Portainer Image

此映象是 Portainer 的社群版,它是免費的,並且包含管理 Docker 環境的所有功能。

步驟 2:將 Portainer 作為 Docker 容器執行

現在,我們可以使用我們拉取的映象來執行 Portainer 容器。以下命令在埠 9000 上執行 Portainer,這是 Portainer Web 介面的預設埠。

$ docker run -d -p 9000:9000 --name=portainer --restart=always -v
   /var/run/docker.sock:/var/run/docker.sock 
   -v portainer_data:/data portainer/portainer-ce
Run Portainer as a Docker Container

命令分解

  • -d - 以分離模式(在後臺)執行容器。
  • -p 9000:9000 - 將主機上的埠 9000 對映到容器中的埠 9000。
  • --name=portainer - 將容器命名為 portainer。
  • --restart=always - 確保 Portainer 容器在停止或系統重新啟動時自動重新啟動。
  • -v /var/run/docker.sock:/var/run/docker.sock - 掛載 Docker 套接字以允許 Portainer 與主機上的 Docker 守護程式通訊。
  • -v portainer_data:/data - 建立一個名為 portainer_data 的 Docker 卷以持久化 Portainer 的資料,例如設定和配置。

步驟 3:訪問 Portainer Web 介面

您現在可以透過開啟 Web 瀏覽器並導航到以下位置來訪問 Portainer Web 介面:https://:9000

Access the Portainer Web Interface

系統會提示您建立管理員使用者並設定初始 Portainer 環境。您可以按照螢幕上的說明完成設定。

步驟 4:驗證 Portainer 設定

您可以透過登入 Web 介面來檢查 Portainer 是否正確執行。您應該會看到 Portainer 儀表板。您可以選擇您的環境,例如本地環境,並且您將能夠看到本地機器中的所有映象和容器。

Verify the Portainer Setup

在本地執行並驗證 Portainer 後,我們準備建立一個 Dockerfile 來 Docker 化我們的自定義 Portainer 設定。

建立 Dockerfile 和構建映象

讓我們現在建立 Dockerfile。在您的 portainer-project 目錄中,建立一個名為 Dockerfile 的檔案 -

$ touch Dockerfile

步驟 1. 定義 Dockerfile 內容

在文字編輯器中開啟 Dockerfile 並新增以下內容 -

# Use the official Portainer community edition image as the base image
FROM portainer/portainer-ce:latest

# Set environment variables (if any)
ENV PORTAINER_ADMIN_PASSWORD='yourpassword'

# Expose the Portainer port
EXPOSE 9000

# Define the default command to run Portainer
CMD ["portainer"]

Dockerfile 分解

  • FROM portainer/portainer-ce:latest - 它指定我們使用最新的官方 Portainer 社群版映象作為我們自定義 Dockerfile 的基礎映象。
  • ENV PORTAINER_ADMIN_PASSWORD='yourpassword' - (可選)它設定 Portainer 管理員密碼的環境變數。
  • EXPOSE 9000 - 此行公開埠 9000,Portainer 的 Web 介面使用此埠。
  • CMD ["portainer"] - 這是執行 Portainer 的預設命令。

步驟 2:構建 Docker 映象

使用此 Dockerfile,我們可以使用以下命令構建您的自定義 Portainer 映象 -

$ docker build -t my-portainer-image .

-t my-portainer-image - 將構建的映象標記為 my-portainer-image。

.: 指定當前目錄作為構建上下文。

Build the Docker Image

步驟 3:驗證映象構建

我們可以透過列出所有 Docker 映象來驗證我們的自定義映象是否已成功建立 -

$ docker images

您應該在可用映象中看到 my-portainer-image

Verify the Image Build

執行 Portainer Docker 容器

現在我們已經準備好了 Docker 映象,我們可以使用自定義 Portainer 映象執行 Docker 容器。

步驟 1:執行 Portainer 容器

我們可以使用以下命令從您的自定義 Portainer 映象啟動容器 -

$ docker run -d -p 9000:9000 --name=portainer-container 
   --restart=always -v /var/run/docker.sock:/var/run/docker.sock 
      -v portainer_data:/data my-portainer-image
Run the Portainer Container

命令分解

  • -d - 以分離模式(在後臺)執行容器。
  • -p 9000:9000 - 將主機上的埠 9000 對映到容器中的埠 9000。這允許您透過 https://:9000 訪問 Portainer Web 介面。
  • --name=portainer-container - 為容器分配一個名稱,以便在 Docker 命令中更容易引用。
  • --restart=always - 配置 Docker 在容器停止或主機系統重新啟動時自動重新啟動容器。
  • -v /var/run/docker.sock:/var/run/docker.sock - 將 Docker 套接字掛載到容器中,以便 Portainer 可以與主機上的 Docker 守護程式通訊。
  • -v portainer_data:/data - 建立並掛載一個名為 portainer_data 的 Docker 卷以持久化 Portainer 的資料,例如配置和設定。
  • my-portainer-image - 指定您之前構建的自定義 Docker 映象的名稱。

步驟 2:訪問 Portainer Web 介面

由於容器正在執行,我們可以開啟 Web 瀏覽器並導航到:https://:9000

我們應該會看到 Portainer 登入螢幕。我們可以使用在初始設定期間設定的管理員憑據登入。

結論

在本節中,我們講解了如何透過建立專案、瞭解專案所需的依賴項、建立 Dockerfile 以及執行 Portainer 容器來將 Portainer 容器化。

我們建立了一個可移植且易於維護的環境,透過該環境,我們將能夠以更高的效率管理我們的 Docker 環境。它還確保我們的設定可複製且一致,這有助於輕鬆維護容器。

您可以進一步自定義 Portainer,將其與您的 CI/CD 管道整合,或使用它管理複雜的 Docker 環境。

Portainer 容器化的常見問題

關於 Portainer 容器化,有一些非常常見的問題 (FAQ),本節嘗試簡要回答它們。

1. 如何在 Docker 容器中設定 Portainer?

要在 Docker 容器中設定 Portainer,請使用官方 Portainer 映象建立一個 Dockerfile。使用環境變數或容器內的配置檔案在該 Docker 容器內配置 Portainer 的設定。公開所需的埠並啟動容器。考慮對映一個捲來持久化 Portainer 的資料和配置。

2. 使用 Portainer 與 Docker 有什麼好處?

Portainer 是一種透過基於 Web 的介面管理 Docker 的簡單方法,因為它提供了一個直觀的介面,可以加深使用者體驗並與構成 Docker 生態系統的多數實體(例如容器、映象和網路等)進行互動。這使得建立和管理容器、部署應用程式以及資源使用變得更加容易。

3. 如何保護 Portainer 訪問許可權?

透過在 Portainer 介面中設定身份驗證和授權來鎖定對 Portainer 的訪問。您可以提供基於密碼的身份驗證,或使用與外部身份驗證提供程式的多種整合之一。此外,請考慮根據 IP 地址或其他條件限制對 Portainer 的訪問。

廣告