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

莫問今朝乄發表於2022-02-15
提示:本系列筆記全部存在於 Github, 可以直接在 Github 檢視全部筆記

Portainer

Portainer 概述

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

Portainer 版本

Portainer 社群版目前具有兩個映象。portainer/portainerportainer/portainer-ce

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

portainer/portainer

portainer/portainer1.X版本(老版本)映象。官方現在已棄用此映象。

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

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

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

portainer/portainer-ce

portainer/portainer-ce2.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

以上是部署 PortainerYAML格式配置檔案

  • version:YMAL 格式版本,當前版本具有 122.X3.X,每個版本的語法都略有差異,不過差異並不大,一般語法沒什麼區別。 不過不同版本語法對 Docker 版本有一定要求,詳細可以參考:https://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

私有化輕量級持續整合部署方案--01-環境配置(下)
  • -f: YAML 檔案存放的地址,在此檔案上傳到了 /yml/docker-compose/ 目錄,
  • -p: 設定當前 Docker Compose 名稱
  • up: 根據配置檔案重新構建服務,啟動映象。如果主機沒有此映象,預設情況會下載映象(可以配置引數是否允許下載映象)。當主機中沒有此 portainer/portainer-ce 映象時會進行下載,所有可能有些慢
  • -d: 設定為後臺執行,與 docker run -d 引數一致

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

並且在掛載的目下可以看到容器中的的資料

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

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

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

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

Portainer 第一次訪問會跳轉到設定管理員使用者頁面

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

設定完成之後,如果本地具有 Docker , 會預設連線到本地 Docker

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

Portainer 頁面

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

私有化輕量級持續整合部署方案--01-環境配置(下) 私有化輕量級持續整合部署方案--01-環境配置(下)
  • Stack: Docker Compose 管理,對當前 Docker Compose 進行管理,並且可以直接上傳 YAML 檔案進行構建容器。目前只有一個Stackportainer
  • Container:Docker 容器管理,可以對所有容器進行管理設定。目前也只有一個容器portainer
  • Image: Docker 映象管理,對當前 Docker 所有映象進行管理,目前也只有一個映象portainer/portainer
  • Volumes: Docker 資料卷管理,
  • Networks: Docker network 管理,目前只有預設的 4 個 Network

Stack 模組

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

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

Limited

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

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

Add Stack

點選 Add Stack 按鈕就可以進行新增 Docker ComposePortainer 支援四種方式新增;

  1. Web editor(直接在當前頁編寫配置)
  2. Upload(提供本地上傳 xxx.yml 檔案)
  3. Repository(提供一個配置檔案的 URL 地址)
  4. Custom template 自定義模板 (2.X 版本新新增的,我也沒了解)
私有化輕量級持續整合部署方案--01-環境配置(下)

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

Portainer API 連線方式

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

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

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

Docker API 需要設定 /lib/systemd/system/docker.service 檔案 ExecStart 屬性

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

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

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

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

sudo systemctl daemon-reload
sudo systemctl restart docker

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

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

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

相關文章