私有化輕量級持續集成部署方案--01-環境配置(下)

提示:本系列筆記全部存在於 Github, 可以直接在 Github 查看全部筆記

Portainer

Portainer 概述

Portainer 是一個 Docker 可視化管理工具,為 Docker 提供狀態提示面板、快速配置部署、數據卷管理等各種功能,基本上能滿足中小型容器管理的需求。
我也感覺 Portainer 使用起來非常方便

Portainer 版本

Portainer 社區版目前具有兩個鏡像。portainer/portainer 和 portainer/portainer-ce。

portainer/portainer

portainer/portainer 是 1.X版本(老版本)鏡像。官方現在已棄用此鏡像。

不過目前網上教程都是以此鏡像為準。我剛開始也沒注意,結果被坑到了。

此鏡像版本對非 SWARM雲連接的 Docker Compose 語法版本只支援到 2.X,並且創建具名Volume 掛載目錄時有問題(我就被這個坑到了)。

portainer/portainer-ce

portainer/portainer-ce 是 2.X 版本的新鏡像。

完全支援 Docker Compose 3.X 語法版本。

Portainer 部署

在此 Portainer 通過 Docker Compose 進行部署。
Docker Compose可觀性較強,並且配置文件可以保存 以後的所有部署方案都採用這種形式。

version: '3.9'

services:
  portainer:
    image: portainer/portainer-ce
    container_name: portainer
    restart: always
    ports:
      - 9000:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /volumes/portainer:/data

以上是部署 Portainer 的 YAML格式配置文件

  • version:YMAL 格式版本,當前版本具有 1、 2 、 2.X、 3.X,每個版本的語法都略有差異,不過差異並不大,一般語法沒什麼區別。 不過不同版本語法對 Docker 版本有一定要求,詳細可以參考://docs.docker.com/compose/compose-file/compose-file-v3/
  • services:容器組配置,依照 YAML 格式可配置多個容器,當前只有一個 portainer 配置。services 之間可以配置 network,依賴順序等。
    • portainer:這是服務(Service)名稱,代表一個容器(Container)。
      • image:容器所使用的鏡像
      • container_name:容器名稱
      • restart:容器重啟策略。就是 docker run 時設置 restart
      • ports:映射埠號,第一個埠號是宿主機埠號,可以設置任意一個未被使用的埠號;第二個埠號是容器中所提供的埠號,容器既然理解為一個單獨的系統環境,那麼就需要提供一些埠號供外部訪問。Portainer 提供了埠號為 9000
      • volumes:數據卷掛載,容器作為單獨的系統環境,往往需要指定宿主目錄對容器內目錄掛載。例如資料庫應用,如果不掛載宿主目錄,容器刪除數據款中數據就沒了。
        或者掛載容器的配置文件,這樣就不需要每次都進入容器內部更新配置。
        第一個可以是一個 volume 名稱 或者 宿主目錄 ,當直接為宿主目錄 時,容器啟動時會使用 宿主目錄 覆蓋 容器內目錄 這個之後會介紹;
        第二個是容器內目錄(Portainer 數據存儲在容器內 /data 目錄)。

PS: 注意: Volume 掛載目錄和文件時,有兩種情況。目錄:宿主機中可以不存在此目錄,Docker 在啟動容器時會自動創建目錄。 文件:當掛載路徑為文件時,宿主機中必須存在此文件

配置屬性中還可以設置好多參數,例如:environment,之後會使用使用,不再介紹。

/var/run/docker.sock 是一個特殊的文件,有些容器需要提供此文件。

文件編寫完成後上傳伺服器執行

docker-compose -f /yml/docker-compose/portainer.yml -p portainer up -d

  • -f: YAML 文件存放的地址,在此文件上傳到了 /yml/docker-compose/ 目錄,
  • -p: 設置當前 Docker Compose 名稱
  • up: 根據配置文件重新構建服務,啟動鏡像。如果主機沒有此鏡像,默認情況會下載鏡像(可以配置參數是否允許下載鏡像)。當主機中沒有此 portainer/portainer-ce 鏡像時會進行下載,所有可能有些慢
  • -d: 設置為後台運行,與 docker run -d 參數一致

成功運行後,會自動啟動容器。

並且在掛載的目下可以看到容器中的的數據

此時就可以使用訪問 Portainer 頁面。

注意:如果是雲主機,需要啟動 9000 埠訪問策略,否則無法訪問。

Portainer 第一次訪問會跳轉到設置管理員用戶頁面

設置完成之後,如果本地具有 Docker , 會默認連接到本地 Docker

Portainer 頁面

進入主頁面後,第一個就是自動連接的本地 Docker , 點擊可以看到 Docker 各種資訊

  • Stack: Docker Compose 管理,對當前 Docker Compose 進行管理,並且可以直接上傳 YAML 文件進行構建容器。目前只有一個Stack:portainer
  • Container:Docker 容器管理,可以對所有容器進行管理設置。目前也只有一個容器:portainer
  • Image: Docker 鏡像管理,對當前 Docker 所有鏡像進行管理,目前也只有一個鏡像:portainer/portainer
  • Volumes: Docker 數據卷管理,
  • Networks: Docker network 管理,目前只有默認的 4 個 Network

Stack 模組

Stack 是用來管理 Docker Compose,目前只有一個,也就是部署的 Portainer

Limited

未使用 Portainer可視化工具部署的 Docker Compose, 在 Portainer可視化工具內部是不允許操作的。

例如 Portainer, 在 Portainer可視化工具中 Control 屬性顯示為 Limited, 意思就是不允許操作這個 stack。

Add Stack

點擊 Add Stack 按鈕就可以進行添加 Docker Compose, Portainer 支援四種方式添加;

  1. Web editor(直接在當前頁編寫配置)
  2. Upload(提供本地上傳 xxx.yml 文件)
  3. Repository(提供一個配置文件的 URL 地址)
  4. Custom template 自定義模板 (2.X 版本新添加的,我也沒了解)

個人比較喜歡使用 Upload 在本地使用編輯器編寫完成之後上傳。當然也可以使用其它方式。看使用場景和個人喜好。

Portainer API 連接方式

Portainer 支援多種連接方式。 介紹一種使用 Docker API 連接方式

API 連接方式是使用 TCP 協議訪問的 Docker API 進行通訊,需要設置 Docker API,允許 Docker 被訪問

Docker API 需要設置 /lib/systemd/system/docker.service 文件 ExecStart 屬性

在此設置只允許內網訪問 ,其實只允許本地 IP 訪問(模擬遠程連接方式)

PS:注意:設置連接主機根據實際情況設置,千萬不要設置為 tcp://0.0.0.0:2375,這樣極大可能會中病毒,親測中過挖礦腳本病毒。

設置完成後需要重啟 Docker 服務

sudo systemctl daemon-reload
sudo systemctl restart docker

現在 Portainer 就可以使用 API 連接方式

Tags: