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 界面img
  2. 設置管理員賬號密碼,點擊【Create user】
  3. 選擇【Local】作為鏡像連接選項,然后點擊【Connect】img
  4. 進入Portainer后台管理界面,點擊Local項目就可以開始使用Portainerimg

部署MySQL容器

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

  1. 登錄 Portainer ,打開【Containers】>【Add container】createcontainer
  2. 設置容器運行所需的參數(下面示圖並描述重點設置部分)
    img

    • 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】createcontainer
  2. 設置容器運行所需的參數(下面示圖並描述重點設置部分)
    wordpress

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

進階實戰:Nginx 容器實現端口轉發

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

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

部署Nginx容器

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

  1. 登錄 Portainer ,打開【Containers】>【Add container】createcontainer
  2. 按照下圖創建 Nginx 容器;nginx-1
  3. 回到容器列表,點擊剛剛創建的 Nginx 容器,可進入到容器詳情頁,往下可看到 volueme 信息,記錄下 /etc/nginx 目錄 對應的 volume 的值。img

部署 FileBrowser 容器

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

設置 Nginx 配置文件實現端口轉發

  1. 打開第二步中創建的 File Browser 網站([公網ip:端口]),賬號密碼為 admin/admin,登錄到 File Browser;img
  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 容器,現在就可以在瀏覽器地址欄輸入域名直接訪問自己的網站了。img
修改完 Nginx 的配置文件后,File Browser 容器可選擇繼續保留使用或刪除。

進階實戰:Portainer 設置 HTTPS

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

    注意設置 File Browser 的 volume 。
  2. 在瀏覽器打開 File Browser ,新建一個名為 cert 文件夾,將證書上傳至 cert;img

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"; } }

img

[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 一欄下的 >_ 圖標;img
  2. 在新打開的頁面,點擊 Connetc 按鈕,連接到容器;img
  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原創發布,轉載請注明出處。


免責聲明!

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



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