01.Portainer-容器界面化管理工具
工欲善其事,必先利其器沛励。
前言
以前總喜歡自己搭建一些好玩的服務(wù)掏觉,如Jellyfin檩咱,NextCloud等等,剛開始原生搭建時每次都要環(huán)境版本折騰一些時間俗他,例如jdk,數(shù)據(jù)庫,多個服務(wù)各自依賴的版本又有不同要求佃牛,并且如果需要換服務(wù)器,環(huán)境遷移時真的很痛苦医舆。
后來慢慢的docker
火起來了俘侠。在我嘗試接觸docker后,我之后所有的服務(wù)有鏡像的幾乎全部使用docker去搭建蔬将,常見熱門的一些好玩的項目幾乎也都有官方的docker鏡像爷速,甚至我現(xiàn)在開發(fā)完的項目都是打包鏡像后去進行部署,方便你我他霞怀。
剛開始習(xí)慣了docker搭建各種服務(wù)后惫东,對我來說雖然比以前原生環(huán)境搭建幸福到天上了,但是也有一些不爽的地方毙石,剛開始每次的服務(wù)容器啟動我都是使用原生命令廉沮,而我經(jīng)常因為需要更換路徑,ip以及其它等等原因調(diào)整命令徐矩,只能殺掉容器重新編寫命令滞时,當(dāng)然我發(fā)現(xiàn)這個問題后就采取了寫shell腳本的形式,將每個容器的啟動用腳本記錄下來滤灯,然后修改腳本即可漂洋。
后續(xù)我又接觸了docker-compose
,這是docker官方的開源項目力喷, 負(fù)責(zé)實現(xiàn)對docker容器集群的快速編排刽漂,其實我只用到他可以將docker的啟動命令參數(shù)以腳本形式記錄下來的功能,并且可以將依賴的兩個容器編排到一起弟孟,例如私有g(shù)it倉庫和它用到的數(shù)據(jù)庫MySql等等贝咙,我剛開始就把它簡單理解為官方的命令腳本(當(dāng)然不是這樣的)。
現(xiàn)在拂募,基本的docker命令都熟悉了庭猩,但是有了更新的需求,有沒有啥工具點點拽拽就行了陈症,不要每次去服務(wù)器里面編輯腳本蔼水,查看日志。
答案是當(dāng)然有录肯,Portainer
來了趴腋。
介紹
Portainer 是一款輕量級的應(yīng)用,它提供了圖形化界面,用于方便地管理Docker環(huán)境优炬,包括單機環(huán)境和集群環(huán)境颁井。
portainer分為社區(qū)版(Portainer Community Edition)和企業(yè)版(Portainer Business Edition),社區(qū)版完全免費開源蠢护,企業(yè)版不免費雅宾,而企業(yè)版也是由社區(qū)版本發(fā)展而來,包括一系列專門針對業(yè)務(wù)用戶需求的高級特性和功能(如 RBAC等等)葵硕。
社區(qū)版本的功能已經(jīng)非常強大了眉抬,滿足一般的集群管理完全沒有問題,而企業(yè)版我開始使用時可以申請5個節(jié)點懈凹,而我寫這篇文章時發(fā)現(xiàn)好像變?yōu)槿齻€節(jié)點了蜀变,如果只是為了容器管理需求,不是經(jīng)常愛折騰蘸劈,直接社區(qū)版,企業(yè)版免費節(jié)點也有到期時間尊沸,目前意思可以繼續(xù)續(xù)威沫,但是不知道會不會變,并且社區(qū)版升級企業(yè)版容易洼专,而企業(yè)版降級似乎有一些麻煩棒掠,我是社區(qū)版升級到了試用的企業(yè)版了,未嘗試降級過屁商。
安裝
在我們搭建好docker環(huán)境的前提下烟很,Portainer是非常方便。
1. 拉取鏡像
我們查看docker倉庫發(fā)現(xiàn)官方portainer鏡像有三個蜡镶,portainer雾袱,portainer-ce以及portainer-ee,分別是舊版portainer(已廢棄)官还,社區(qū)版與企業(yè)版芹橡。我們根據(jù)需要拉取portainer-ce以及portainer-ee即可,不要再拉取portainer望伦。如果使用企業(yè)版本林说,首先去申請免費授權(quán)。
執(zhí)行以下命令屯伞,拉取鏡像:
docker pull portainer/portainer-ce // 社區(qū)版
or
docker pull portainer/portainer-ee //企業(yè)版
啟動容器
因為我們才準(zhǔn)備搭建界面化容器管理服務(wù)腿箩,所以portainer的啟動命令肯定只能使用腳本,并且不建議使用docker-compose
劣摇,直接shell腳本簡單易用珠移,服務(wù)器遷移后直接首先也執(zhí)行腳本啟動一個容器即可。
容器和鏡像的關(guān)系可以簡單理解鏡像是一個模版,我依托這個模版可以啟動多個實例即容器剑梳。這些容器可以相互獨立唆貌,但是他們的來源都是同一個鏡像。
容器啟動命令內(nèi)容如下:
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always --net dllcnx --ip 172.20.0.10 --pull=always -v /var/run/docker.sock:/var/run/docker.sock -v /docker/portainer:/data portainer/portainer-ce:latest
需要注意的點:
-d
:選項把這個容器的運行分離到后臺垢乙,這樣就能繼續(xù)使用終端锨咙。如果沒放這個選項,可以用 Crtl+C 來停止容器的運行追逮,或用 Ctrl+P 然后 Ctrl+Q 來像這選項一樣把運行放置去后臺酪刀。-p 8000:8000
:端口映射,選項捆綁宿主機的 8000 端口(前一個號碼)到容器的 8000 端口(后一個號碼)钮孵,使得訪問宿主機的 8000 端口就等同于訪問容器的 8000 端口骂倘。可以簡單理解一個容器就是一個小的服務(wù)器巴席,它內(nèi)部有完整的獨立體系历涝,它內(nèi)部開啟了8000端口,你外部是訪問不到的漾唉,只有將宿主機的端口通過命令映射了荧库,你才可以訪問宿主機端口傳到內(nèi)部去。所以有了一個問題要注意赵刑,內(nèi)部8000端口不能改分衫,因為portainer本身就用的8000,而你外部宿主機可以根據(jù)你的需求改動般此。--name=portainer
: 容器起一個名字restart=always
: 表示遇到意外停機蚪战,關(guān)閉等等原因,總是自動重啟铐懊,還有其他參數(shù)自己可以去學(xué)習(xí)--net dllcnx --ip 172.20.0.10
: 這個很多人用不到邀桑,相當(dāng)于我在容器里面建立了一個網(wǎng)絡(luò),這個網(wǎng)絡(luò)的名字叫dllcnx科乎,并且指定我這個容器ip是172.20.0.10(我的dllcnx網(wǎng)絡(luò)的網(wǎng)段里面的一個ip)概漱,我是因為多個服務(wù)為了統(tǒng)一管理,建立了網(wǎng)絡(luò)喜喂。--pull=always
:選項會檢測下載過的 latest 版鏡像是否有更新瓤摧,并重新下載-v /var/run/docker.sock:/var/run/docker.sock
: 類似與端口映射,這個是文件映射玉吁,將宿主機的docker命令映射進入容器里面照弥,同樣容器內(nèi)部位置不能改,外部看你安裝的具體情況进副,一般就是這個路徑这揣。-v /docker/portainer:/data
:同上悔常,也是文件映射,只是這個指向是個文件夾给赞,相當(dāng)于映射整個文件夾机打。目的是數(shù)據(jù)持久化,因為容器和宿主機是隔離的片迅,我們有時遷移服務(wù)器后残邀,重新啟動的容器肯定丟失了上個服務(wù)器的數(shù)據(jù),而這個文件夾下就是portainer的操作數(shù)據(jù)柑蛇,我們將其映射出來芥挣,后續(xù)遷移可以直接打包到新服務(wù)器,只要宿主機路徑繼續(xù)指向這些文件耻台,則能保證數(shù)據(jù)的持久空免。
-
portainer/portainer-ce:latest
: 容器使用的鏡像,這個代表社區(qū)版盆耽,冒號后邊是版本蹋砚,指的默認(rèn)版本。
配置
啟動成功后摄杂,我們需要使用我們的ip加端口進行訪問坝咐,例如我們設(shè)置的宿主機默認(rèn)8000端口,則宿主機IP:8000即可匙姜。
-
首次進入需要創(chuàng)建管理員:
image.png
-
進入后需要我們選擇連接哪個docker畅厢,我們當(dāng)然選擇本機環(huán)境:
image.png
通過這個也可以看到冯痢,portainer其實也支持連接其他服務(wù)器的docker進行管理氮昧,這個也是之前我們看到企業(yè)版免費授權(quán)3個節(jié)點的作用,一個連接就是一個節(jié)點浦楣。
-
我們可以看到我們的環(huán)境了袖肥,點擊進入就能看我們的容器了
image.png
左側(cè)菜單欄常用的就是
- Dashboard監(jiān)控面板,
- App Templates模版
- stacks(其實就是
docker-compose
的管理和編寫) - Containers(啟動的容器)振劳,Images(下載的鏡像)
- Networks(網(wǎng)絡(luò))
- Volumes(文件卷椎组,直接我-v映射文件到宿主機,docker還提供這個模式)
面板說明
Dashboard
監(jiān)控面板历恐,可以看到我們的docker-compose腳本數(shù)寸癌,啟動的容器數(shù)量,鏡像數(shù)量等等弱贼。
App Templates
打開App Templates菜單可以看到很多創(chuàng)建容器的模板蒸苇,通過模板設(shè)置下即可輕松創(chuàng)建容器,我是沒咋使用過或者沒發(fā)現(xiàn)咋用吮旅;
Stacks
docker-compose
編排界面溪烤,我喜歡以編排形式啟動容器。我們可以新建Stacks,也可對以往的進行管理檬嘀,點擊某個編排名稱可進入查看腳本內(nèi)容槽驶,以及正在依托這個腳本啟動的容器。
某個容器腳本
注意:
docker run命令啟動的容器都可以轉(zhuǎn)換為docker-compose
編排模式鸳兽,需要按照各自對應(yīng)的映射命令方式對應(yīng)寫正確即可掂铐,可以自行研究。
Containers
容器操作面板贸铜,我們可以新建容器堡纬,也看到當(dāng)前創(chuàng)建的容器,我們可以對容器進行運行蒿秦、暫停烤镐、刪除等操作;點擊某個容器進入也可以查看對應(yīng)的設(shè)置以及日志棍鳖,配置炮叶,交互等等。
新建容器界面:
Images
打開Images菜單渡处,我們可以查看所有的本地鏡像镜悉,對鏡像進行管理;
Networks
打開Networks菜單医瘫,可以查看Docker環(huán)境中的網(wǎng)絡(luò)情況侣肄;
使用
現(xiàn)在我以我需要啟動一個nginx服務(wù)為例,分別通過Containers和Stacks模式搭建:
原生啟動命令:
docker run -d -p 8888:80 nginx:latest
Containers模式
點擊左側(cè)菜單欄Containers->Add container->進入配置頁面:
我只配置名稱醇份,端口稼锅,其它命令此次都不配置,比如按理應(yīng)該把配置文件暴漏外部僚纷,大家根據(jù)需要矩距,我此次只為演示。
點擊Deploy the container
進行啟動怖竭。
Stacks模式
點擊左側(cè)菜單欄Stacks->Add stack->進入配置頁面:
stacks按照docker-compose
寫法寫即可锥债。
驗證
我瀏覽器端口12888的原因是家庭內(nèi)外網(wǎng)又加了一層映射,將局域網(wǎng)的8888映射到了外網(wǎng)的12888.
后記
- 本文不涉及
Docker
及docker-compose
環(huán)境安裝痊臭,請參考其它文章先行安裝docker及docker-compose
<center>
<img src="https://dllcnx.com:18889/images/dllcnx/gzh/search_01.jpg" style="width: 100px;">
</center>