1. 程式人生 > 其它 >Docker視覺化工具——Portainer全解

Docker視覺化工具——Portainer全解

今天,小九給大家推薦一個好用的docker視覺化介面~

Portainer是一個視覺化的Docker操作介面,提供狀態顯示面板、應用模板快速部署、容器映象網路資料卷的基本操作(包括上傳下載映象,建立容器等操作)、事件日誌顯示、容器控制檯操作、Swarm叢集和服務等集中管理和操作、登入使用者管理和控制等功能。功能十分全面,基本能滿足中小型單位對容器管理的全部需求。

下面,小九將從登入、部署,再到實踐,全方位地介紹Portainer。

登入 Portainer

如果你部署了包含 Portainer 的Docker環境,請直接登入使用。否則,請先安裝 Portainer:

#通過命令安裝 Portainer

docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
cd /usr/libexec/docker/
sudo ln -s docker-runc-current docker-runc
  1. 通過本地瀏覽器訪問:http://伺服器公網IP:9000, 直接進入 Portainer 介面
  2. 設定管理員賬號密碼,點選【Create user】
  3. 選擇【Local】作為映象連線選項,然後點選【Connect】
  4. 進入Portainer後臺管理介面,點選Local專案就可以開始使用Portainer

部署MySQL容器

下面詳細介紹通過 Portainer 部署MySQL:

  1. 登入 Portainer ,開啟【Containers】>【Add container】
  2. 設定容器執行所需的引數(下面示圖並描述重點設定部分)

    • Name 為自定義的容器名稱
    • Image 為容器映象名稱,例如"mysql:5.6" 系統會自動到
      DockerHub (opens new window)
      中拉取MySQL5.6
    • Network ports configuration:建議開啟【Publish all exposed network ports...】 以保證容器中的服務可以通過伺服器埠被外界訪問。如果不開啟,需手工建立準確的對映關係(難度係數有點高)。
    • Env 環境變數設定:新增如所示的容器環境變數,對於MySQL映象來說,資料庫 root 密碼MySQL_ROOT_PASSWORD為必填變數,其他更多可選變數檢視 MySQL映象說明
    • Restart policy:建議選擇【Always】,使得容器無論在什麼情況下停止總會自動重新啟動;
  3. 點選 Deploy the container 建立容器;
  4. 如果伺服器安全組的3306埠已經開放,現在就可以在本地通過遠端連線 MySQL 資料庫

    MySQL8遠端訪問測試失敗,報錯:Authentication plugin caching_sha_password cannot be loaded...

部署WordPress容器

下面詳細介紹通過 Portainer 部署WordPress以及使用上一步的MySQL作為資料儲存:

  1. 登入 Portainer ,開啟【Containers】>【Add container】
  2. 設定容器執行所需的引數(下面示圖並描述重點設定部分)

    • Name 為自定義的容器名稱
    • Image 為容器映象名稱,例如"wordpress" 系統會自動到[DockerHub]中拉取WordPress
    • Network ports configuration:建議開啟【Publish all exposed network ports...】 以保證容器中的服務可以自動匹配伺服器埠被外界訪問。如果不開啟,需手工建立準確的對映關係(難度係數有點高)。
    • Restart policy:建議選擇【Always】,使得容器無論在什麼情況下停止總會自動重新啟動;
  3. 點選 Deploy the container 建立容器,建立成功後檢視對映的伺服器埠號;
  4. 本地瀏覽器訪問:http://伺服器公網IP:埠即可訪問 WordPress 的初始化安裝介面
  5. 此處如果你打算使用MySQL容器,資料庫主機地址填寫的是伺服器公網IP:埠
  6. 資料庫驗證通過後,系統提示正式“進行安裝”

進階實戰:Nginx 容器實現埠轉發

以上一章節中的 Wordpress 網站作為示例,在 WordPress 部署完成後,需要在瀏覽器內輸入http://公網IP地址:埠的形式訪問網站,但我們不加埠就能訪問域名,所以這時就要用到 Nginx 的埠轉發功能。

要實現這個需求,有三個部署:部署Nginx容器,部署 FileBrowser 容器,

部署Nginx容器

下面詳細介紹通過 Portainer 部署 Nginx:

  1. 登入 Portainer ,開啟【Containers】>【Add container】
  2. 按照下圖建立 Nginx 容器;
  3. 回到容器列表,點選剛剛建立的 Nginx 容器,可進入到容器詳情頁,往下可看到volueme資訊,記錄下/etc/nginx 目錄對應的 volume 的值。

部署 FileBrowser 容器

  1. 進入到 Portainer 頁面,選擇左邊的App Templates選項,往下找到File browser容器模板,單擊選擇;
  2. 按照下圖建立 File browser 容器;
  3. 進入到容器列表,單擊剛剛建立的 File browser 容器,點選Duplicate/Edit按鈕,進入到修改容器資訊頁面;
  4. 按照下圖,將 File browser 的 volume 值修改為 和 Nginx 的 volume 值相同;

設定 Nginx 配置檔案實現埠轉發

  1. 開啟第二步中建立的 File Browser 網站([公網ip:埠]),賬號密碼為admin/admin,登入到 File Browser;
  2. 進入

conf.d

目錄,雙擊

default.conf

檔案,將原來的配置刪除,修改為如下圖所示內容:

upstream wordpress {
    server 159.138.6.145:32773;
}

server {
    listen 80;
    server_name  test.example.top; #繫結域名

    location / {
    proxy_pass http://wordpress;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Via "nginx";
    }
}
[danger] 注意:請將server_name改為自己的域名,proxy_pass改為自己網站容器的IP:埠號
  1. 到容器列表重啟 Nginx 容器,現在就可以在瀏覽器位址列輸入域名直接訪問自己的網站了。
修改完 Nginx 的配置檔案後,File Browser 容器可選擇繼續保留使用或刪除。

進階實戰:Portainer 設定 HTTPS

  1. 參考 安裝File Browser容器章節新建 File Browser 容器;

    注意設定 File Browser 的 volume 。
  2. 在瀏覽器開啟 File Browser ,新建一個名為cert資料夾,將證書上傳至 cert;

3.修改 Nginx 的配置檔案,注意將 IP 和域名改成自己的伺服器 IP 和域名;

upstream portainer {
server 159.138.6.145:9000;
}

server {
    listen 80;
    listen 443 ssl;
    server_name  test.websoft9.top;

    ssl_certificate /etc/nginx/cert/cert-1540972394298_test.websoft9.top.crt;
    ssl_certificate_key /etc/nginx/cert/cert-1540972394298_test.websoft9.top.key;

    location / {
    proxy_pass http://portainer;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Via "nginx";
    }
}

[warning] 如果證書路徑和圖中不同,請將圖中證書路徑改為自己的證書所在路徑,並將證書名改為自己的證書名。
  1. 在容器列表中重啟 Nginx 容器使配置生效,就可以在瀏覽器內使用 https://域名 訪問 Portainer 了。
  2. 如果想要達到訪問 http 自動跳轉到 https 的效果,請將配置改成如下所示:

     upstream portainer {
     server 159.138.6.145:9000;
     }
    
     server {
         listen 80;
         listen 443 ssl;
         server_name  test.websoft9.top;
    
     ssl_certificate /etc/nginx/cert/cert-1540972394298_test.websoft9.top.crt;
     ssl_certificate_key /etc/nginx/cert/cert-1540972394298_test.websoft9.top.key;
     
     if ($scheme != "https") {
     return 301 https://$host$request_uri;
     }
    
     location / {
     proxy_pass http://portainer;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Via "nginx";
     }
     }

技巧

Portainer 執行容器內部命令

在此以連線到 MySQL 容器為例進行說明:

  1. 返回到容器列表,點選下圖中 MySQL 的Quick actions一欄下的>_圖示;
  2. 在新開啟的頁面,點選Connetc按鈕,連線到容器;
  3. 接下來就可以在命令視窗中輸入mysql -uroot -ppassword;",其中 “password” 為您在自己設定的資料庫密碼,這樣就可以開始使用資料庫命令對 MySQL 進行管理了;

Portainer 備份

到 Portainer 的容器列表裡面檢視 portainer 的 volume 對應的伺服器目錄,在/var/lib/docker/volumes下可找到 volume 對應的目錄名,將其備份即可。

Portainer 升級

只需執行docker pull portainer就可以將 Portainer 升級到最新版本。

Portaniner 繫結域名

域名繫結可在 [配置Nginx實現埠轉發]章節中將 server_name 改成自己的域名即可。

常見問題

不知道容器映象所需的埠怎麼辦?

建議開啟【Publish all exposed network ports...】 以保證容器中的服務可以自動匹配伺服器埠被外界訪問。如果不開啟,需自行到[DockerHub ]網站檢視埠。

容器的埠與伺服器的埠有什麼區別?

容器埠需要通過伺服器埠做對映,才可以被網際網路使用者訪問。

本文由Websoft9原創釋出,轉載請註明出處。