今天,小九給大家推薦一個好用的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原創發布,轉載請注明出處,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/296354.html
標籤:其他
