今天,小九給大家推薦一個好用的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
- 通過本地瀏覽器訪問:http://服務器公網IP:9000, 直接進入 Portainer 界面
- 設置管理員賬號密碼,點擊【Create user】
- 選擇【Local】作為鏡像連接選項,然后點擊【Connect】
- 進入Portainer后台管理界面,點擊Local項目就可以開始使用Portainer
部署MySQL容器
下面詳細介紹通過 Portainer 部署MySQL:
- 登錄 Portainer ,打開【Containers】>【Add container】
-
設置容器運行所需的參數(下面示圖並描述重點設置部分)
- 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】,使得容器無論在什么情況下停止總會自動重新啟動;
- 點擊 Deploy the container 創建容器;
-
如果服務器安全組的3306端口已經開放,現在就可以在本地通過遠程連接 MySQL 數據庫
MySQL8遠程訪問測試失敗,報錯:Authentication plugin caching_sha_password cannot be loaded...
部署WordPress容器
下面詳細介紹通過 Portainer 部署WordPress以及使用上一步的MySQL作為數據存儲:
- 登錄 Portainer ,打開【Containers】>【Add container】
-
設置容器運行所需的參數(下面示圖並描述重點設置部分)
- Name 為自定義的容器名稱
- Image 為容器鏡像名稱,例如"wordpress" 系統會自動到[DockerHub]中拉取WordPress
- Network ports configuration:建議開啟【Publish all exposed network ports...】 以保證容器中的服務可以自動匹配服務器端口被外界訪問。如果不開啟,需手工建立准確的映射關系(難度系數有點高)。
- Restart policy:建議選擇【Always】,使得容器無論在什么情況下停止總會自動重新啟動;
- 點擊 Deploy the container 創建容器,創建成功后查看映射的服務器端口號;
- 本地瀏覽器訪問:http://服務器公網IP:端口 即可訪問 WordPress 的初始化安裝界面
- 此處如果你打算使用MySQL容器,數據庫主機地址填寫的是 服務器公網IP:端口
- 數據庫驗證通過后,系統提示正式“進行安裝”
進階實戰:Nginx 容器實現端口轉發
以上一章節中的 Wordpress 網站作為示例,在 WordPress 部署完成后,需要在瀏覽器內輸入 http://公網IP地址:端口 的形式訪問網站,但我們不加端口就能訪問域名,所以這時就要用到 Nginx 的端口轉發功能。
要實現這個需求,有三個部署:部署Nginx容器,部署 FileBrowser 容器,
部署Nginx容器
下面詳細介紹通過 Portainer 部署 Nginx:
- 登錄 Portainer ,打開【Containers】>【Add container】
- 按照下圖創建 Nginx 容器;
- 回到容器列表,點擊剛剛創建的 Nginx 容器,可進入到容器詳情頁,往下可看到 volueme 信息,記錄下 /etc/nginx 目錄 對應的 volume 的值。
部署 FileBrowser 容器
- 進入到 Portainer 頁面,選擇左邊的 App Templates 選項,往下找到 File browser 容器模板,單擊選擇;
- 按照下圖創建 File browser 容器;
- 進入到容器列表,單擊剛剛創建的 File browser 容器,點擊 Duplicate/Edit 按鈕,進入到修改容器信息頁面;
- 按照下圖,將 File browser 的 volume 值修改為 和 Nginx 的 volume 值相同;
設置 Nginx 配置文件實現端口轉發
- 打開第二步中創建的 File Browser 網站([公網ip:端口]),賬號密碼為 admin/admin,登錄到 File Browser;
- 進入
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:端口號
- 到容器列表重啟 Nginx 容器,現在就可以在瀏覽器地址欄輸入域名直接訪問自己的網站了。
修改完 Nginx 的配置文件后,File Browser 容器可選擇繼續保留使用或刪除。
進階實戰:Portainer 設置 HTTPS
-
參考 安裝File Browser容器章節新建 File Browser 容器;
注意設置 File Browser 的 volume 。
- 在瀏覽器打開 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] 如果證書路徑和圖中不同,請將圖中證書路徑改為自己的證書所在路徑,並將證書名改為自己的證書名。
- 在容器列表中重啟 Nginx 容器使配置生效,就可以在瀏覽器內使用 https://域名 訪問 Portainer 了。
-
如果想要達到訪問 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 容器為例進行說明:
- 返回到容器列表,點擊下圖中 MySQL 的 Quick actions 一欄下的 >_ 圖標;
- 在新打開的頁面,點擊 Connetc 按鈕,連接到容器;
- 接下來就可以在命令窗口中輸入
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原創發布,轉載請注明出處。