使用Portainer部署Docker容器實(shí)踐

一、背景

最近在使用rancher2.5.5部署Redis主從復(fù)制的時(shí)候疙渣,發(fā)現(xiàn)rancher會(huì)產(chǎn)生很多iptables的規(guī)則晃危,這些規(guī)則導(dǎo)致我們?cè)诓渴鹆藃ancher的機(jī)器上無法使用Redis的主從復(fù)制功能毛肋,因?yàn)槲覍?duì)rancher和k8s的了解也僅限于了解網(wǎng)絡(luò)架構(gòu)和使用,對(duì)底層并不深入乏矾,短期內(nèi)無法解決這個(gè)網(wǎng)絡(luò)沖突的問題孟抗;

因此我將rancher管理docker的模式換成使用protainer的方式,這個(gè)portainer相對(duì)來說更加輕量級(jí)钻心,在搭建過程中也使用了幾個(gè)小時(shí)學(xué)習(xí)凄硼,現(xiàn)在講整個(gè)過程盡量復(fù)原給大家一些參考。

二捷沸、操作步驟

  1. 安裝Portiner
  2. 管理節(jié)點(diǎn)
  3. 部署容器

三摊沉、安裝Portiner

安裝Portiner的方式有很多種,但我一向喜歡使用最簡(jiǎn)單的方法來完成所需要做的事情亿胸,因此這里我將使用docker的方式來搭建它坯钦。

3.1 docker部署

docker部署的方式非常簡(jiǎn)單,只需要執(zhí)行簡(jiǎn)單的運(yùn)行容器命令即可侈玄,命令如下所示婉刀。

docker run -d \
-p 9000:9000 \
-p 8000:8000 \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/docker/portainer-ce/data:/data \
--name portainer-ce portainer/portainer-ce

命令中映射了物理機(jī)的8000端口和9000端口到容器中的8000端口以及9000端口,同時(shí)將宿主機(jī)的docker通信文件/var/run/docker.sock也映射到了容器中序仙,另外為了持久化部署突颊,還將目錄/opt/docker/portainer-ce/data映射到了容器的/data目錄下,命令執(zhí)行完成之后潘悼,返回結(jié)果信息如下圖所示

image

在上圖中可以看到已經(jīng)成功運(yùn)行了一個(gè)docker容器律秃,接下來我需要驗(yàn)證服務(wù)是否正常運(yùn)行,使用瀏覽器訪問URLhttp://127.0.0.1:9000/地址治唤,結(jié)果如下所示

image

在上圖中可以看到Portainer系統(tǒng)已經(jīng)能夠訪問棒动, 說明成功系統(tǒng)安裝成功了。

3.2 節(jié)點(diǎn)初始化

現(xiàn)在我需要設(shè)置管理員的賬號(hào)密碼宾添,這里我簡(jiǎn)單填寫密碼和確認(rèn)密碼之后船惨,點(diǎn)擊Create user按鈕即可創(chuàng)建管理員賬戶。

管理員賬戶設(shè)置完成之后缕陕,需要進(jìn)行初始化粱锐,如下圖所示

image

在上圖中有三個(gè)選項(xiàng),我選擇使用Portainer管理本地docker程序扛邑,點(diǎn)擊Connect按鈕怜浅,即可完成初始化操作。

3.3 功能初探

完成初始化操作之后蔬崩,就可以進(jìn)入Portainer的工作界面恶座,如下圖所示

image

在上圖找那個(gè)可以看到Portainer系統(tǒng)中已經(jīng)有一個(gè)local的本地節(jié)點(diǎn)搀暑,我們可以點(diǎn)擊它進(jìn)入節(jié)點(diǎn)的管理,如下圖所示

image

在上圖中可以看到Portainer系統(tǒng)列出了local節(jié)點(diǎn)的 Stack奥裸、容器信息险掀、鏡像信息沪袭、磁盤信息懊直、網(wǎng)絡(luò)信息等等疤祭,這里我隨意點(diǎn)擊Containers區(qū)塊,就可以看到容器列表,如下圖所示

image

在上圖中可以看到容器列表中存在兩個(gè)容器仔引,以及容器的運(yùn)行狀態(tài),也可以對(duì)這些容器進(jìn)行控制絮重。

四惋啃、管理節(jié)點(diǎn)

現(xiàn)在已經(jīng)對(duì)本地docker可以進(jìn)行控制,但是我并不滿足于此毅该,我需要對(duì)其他機(jī)器也進(jìn)行控制博秫。

4.1 開始添加節(jié)點(diǎn)

在Portainer系統(tǒng)中,有一個(gè)endpoints的菜單眶掌,在這個(gè)菜單當(dāng)中可以添加多個(gè)節(jié)點(diǎn)挡育,如下圖所示

image

在上圖中可以看到,已經(jīng)有一個(gè)local的節(jié)點(diǎn)朴爬,在列表上方有一個(gè)Add endpoint按鈕即寒,點(diǎn)擊按鈕后就可以來到添加節(jié)點(diǎn)的詳情頁(yè),如下圖所示

image

在上圖中可以看到有5個(gè)選項(xiàng)召噩,這里我選擇最簡(jiǎn)單的一種方式母赵,使用Docker API進(jìn)行控制。

4.2 開放API控制

這種方法需要在節(jié)點(diǎn)的docker啟動(dòng)程序中添加參數(shù)具滴,因此我需要先登錄到節(jié)點(diǎn)服務(wù)器中去凹嘲,ssh登登錄服務(wù)器的命令如下所示

ssh root@xxx.xxx.xxx.xxx

命令執(zhí)行完畢之后,返回如下圖所示


image

在上圖中可以看到已經(jīng)進(jìn)入節(jié)點(diǎn)所在的服務(wù)器构韵,接著需要編輯docker啟動(dòng)的配置文件周蹭,命令如下所示

vim /usr/lib/systemd/system/docker.service

命令執(zhí)行之后,就可以在vim編輯界面修改配置贞绳,如下圖所示


image

將開啟遠(yuǎn)程訪問代碼加入到docker的啟動(dòng)命令行中谷醉,代碼如下所示

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

將代碼復(fù)制到 /usr/bin/dockerd程序后面,如下圖所示

image

保存配置文件之后冈闭,需要重啟docker服務(wù)俱尼,重啟docker的命令如下所示

systemctl daemon-reload  && systemctl restart docker

重啟docker之后,一切正常的話就完成了

4.3 驗(yàn)證端口狀態(tài)

查看docker的配置信息萎攒,命令如下所示

docker info

命令執(zhí)行之后遇八,返回的信息如下圖所示


image

在上圖中可以看到docker給了一個(gè)warning的警告提示矛绘,告知我開啟遠(yuǎn)程訪問會(huì)存在安全風(fēng)險(xiǎn),這里暫時(shí)不理會(huì)它刃永,不過出現(xiàn)這個(gè)提示說明確實(shí)是開啟了遠(yuǎn)程訪問的功能

另外可以查看通過開放端口货矮,來驗(yàn)證開啟是否成功,命令如下所示

netstat -ntl

命令執(zhí)行完畢之后斯够,會(huì)返回當(dāng)前主機(jī)的端口開放情況囚玫,如下圖所示

image

在上圖中可以看到2375端口已經(jīng)被開啟成功, 說明節(jié)點(diǎn)本身開啟docker是OK了读规;

但是Portainer通過ip訪問此節(jié)點(diǎn)的時(shí)候抓督,要考慮網(wǎng)絡(luò)中的防火墻是否會(huì)屏蔽此端口,這里可以使用nmap工具來探測(cè)節(jié)點(diǎn)的端口是否可以被訪問束亏,現(xiàn)在我回到Portainer系統(tǒng)的命令終端铃在,并使用nmap工具進(jìn)行探測(cè),命令如下所示

nmap -p 2375 xxx.xxx.xxx.xxx

命令執(zhí)行之后碍遍,會(huì)返回2375是否處于開啟的情況定铜,執(zhí)行結(jié)果如下圖所示

image

在上圖中可以看到節(jié)點(diǎn)的2375端口是開啟的,并且可以進(jìn)行連接怕敬。

4.4 完成添加節(jié)點(diǎn)

接下來回到瀏覽器窗口揣炕,如下圖所示

image

在上圖所示的網(wǎng)頁(yè)中,將節(jié)點(diǎn)的IP地址和端口通過URL形式填寫進(jìn)去赖捌,然后點(diǎn)擊Add endpodint按鈕祝沸,即可將節(jié)點(diǎn)增加進(jìn)去,添加成功會(huì)有相應(yīng)的提示越庇,如下圖所示

image

在上圖中可以看到Portainer系統(tǒng)提示添加節(jié)點(diǎn)已經(jīng)成功罩锐,并且節(jié)點(diǎn)列表可以看到此節(jié)點(diǎn)了。

五卤唉、部署容器

添加節(jié)點(diǎn)完成之后涩惑,我準(zhǔn)備在遠(yuǎn)程節(jié)點(diǎn)中部署我的容器;

5.1 部署單個(gè)容器

回到Portainer主頁(yè)桑驱,在主頁(yè)可以看到剛才添加的節(jié)點(diǎn)信息竭恬,如下圖所示

image

在上圖中選擇剛才添加的節(jié)點(diǎn),然后進(jìn)入容器菜單選項(xiàng)熬的,可以看到此節(jié)點(diǎn)的容器列表痊硕,,如下圖所示

image

在上圖所示頁(yè)面的列表上方有一個(gè)Add container按鈕押框,點(diǎn)擊此按鈕后就會(huì)調(diào)整到添加容器詳情頁(yè)

image

在上圖所示的頁(yè)面中岔绸,需要將docker鏡像地址填寫進(jìn)去,這里我隨意選舉了一個(gè)nginx鏡像,并且將主機(jī)的8888端口映射到了容器的80端口盒揉,提交這些信息之后晋被,Portainer系統(tǒng)會(huì)告知你容器運(yùn)行是否成功,如下圖所示

image

在上圖中可以看到容器已經(jīng)運(yùn)行成功刚盈,并且跳轉(zhuǎn)到了容器列表中羡洛,接下來我們可以訪問此節(jié)點(diǎn)對(duì)應(yīng)的8888端口,來驗(yàn)證服務(wù)是否可用.

打開瀏覽器藕漱,然后在地址欄中填入U(xiǎn)RLhttp://xxx.xxx.xxx.xxx:8888/欲侮,訪問之后返回的結(jié)果如下圖所示

image

在上圖中可以看到nginx服務(wù)已經(jīng)成功運(yùn)行了;

5.2 部署 docker-compose

除了在容器列表頁(yè)部署容器之外谴分,Portainer系統(tǒng)還支持使用docker-compose的方式進(jìn)行部署锈麸,在Portainer系統(tǒng)中叫做stacks,在菜單欄中選擇此項(xiàng),可以進(jìn)入docker-compose服務(wù)的列表牺蹄,如下圖所示

image

在列表的上方有一個(gè)Add stack按鈕,點(diǎn)擊此按鈕薄翅,就可以添加docker-compose服務(wù)沙兰,如下圖所示

image

在上圖所示的頁(yè)面中,會(huì)要求我填寫docker-compose的信息翘魄,這里我準(zhǔn)備了一個(gè)Redis服務(wù)的docker-compose的配置鼎天,配置代碼如下所示

version: '3.5'
services:
  redis:
    image: "redis:latest"
    container_name: redis_test
    command: redis-server
    ports:
      - "16379:16379"

降配置填到頁(yè)面的后,進(jìn)行提交Portainer就會(huì)在對(duì)應(yīng)節(jié)點(diǎn)部署剛才的docker-compose服務(wù)暑竟,如下圖所示

image

部署成功之后斋射,可以在stacks列表中看到剛才部署的服務(wù),你還可以點(diǎn)擊列表中的服務(wù)名稱但荤,進(jìn)入詳情頁(yè)進(jìn)行查看和修改罗岖,如下圖所示

image

在上圖中可以看到此服務(wù)具體運(yùn)行了什么容器,也可以終止或刪除該容器腹躁。

本文對(duì)Portainer也是一個(gè)初探桑包,更加細(xì)節(jié)的還需要各位孜孜不倦的進(jìn)行探索。


關(guān)于作者

作者:湯青松

微信:songboy8888

日期:2021-04-10

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纺非,一起剝皮案震驚了整個(gè)濱河市哑了,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烧颖,老刑警劉巖弱左,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炕淮,居然都是意外死亡拆火,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榜掌,“玉大人优妙,你說我怎么就攤上這事≡髡耍” “怎么了套硼?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)胞皱。 經(jīng)常有香客問我邪意,道長(zhǎng),這世上最難降的妖魔是什么反砌? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任雾鬼,我火速辦了婚禮,結(jié)果婚禮上宴树,老公的妹妹穿的比我還像新娘策菜。我一直安慰自己,他們只是感情好酒贬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布又憨。 她就那樣靜靜地躺著,像睡著了一般锭吨。 火紅的嫁衣襯著肌膚如雪蠢莺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天零如,我揣著相機(jī)與錄音躏将,去河邊找鬼。 笑死考蕾,一個(gè)胖子當(dāng)著我的面吹牛祸憋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辕翰,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼夺衍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了喜命?” 一聲冷哼從身側(cè)響起沟沙,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎壁榕,沒想到半個(gè)月后矛紫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牌里,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年颊咬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了务甥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喳篇,死狀恐怖敞临,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情麸澜,我是刑警寧澤挺尿,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站炊邦,受9級(jí)特大地震影響编矾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜馁害,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一窄俏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碘菜,春花似錦凹蜈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吊骤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間静尼,已是汗流浹背白粉。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鼠渺,地道東北人鸭巴。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拦盹,于是被迫代替她去往敵國(guó)和親鹃祖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容