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


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

Portainer

Portainer 概述

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

Portainer 版本

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

portainer/portainer

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

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

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

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

  • -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 文件進行構建容器。目前只有一個Stackportainer
  • 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 ComposePortainer 支持四種方式添加;

  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 連接方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM