......接上一篇文章
在Rancher通過界面方式添加容器的方式其實有兩種寞埠,一種是在上面提到的管理主機屁置,直接添加獨立容器(獨立于Rancher平臺的容器,就算Rancher平臺停了仁连,容器還會在各自主機保留)蓝角,另一種是下一節(jié)會講到的,通過應用添加的方式添加容器(由Rancher平臺管理,只要應用刪除或Rancher沒了使鹅,對應的容器也將失效)揪阶。
點擊主機面板下的【添加容器】按鈕,彈出添加容器界面患朱,進行以下配置:
輸入本主機唯一并能標識的容器名稱鲁僚,再輸入鏡像名,默認是ubuntu:14.04.3(即最新版本的基礎鏡像麦乞,就是最最干凈Linux的包)蕴茴,關于鏡像,可以通過docker search [鏡像名] 去搜索:
?也可以進入docer hub頁面上去搜索姐直,一搜就能搜出大量的公共鏡像倦淀,并且能看到各個歷史版本:
通過標示tag我們就能拉取指定版本的鏡像,如tomcat:8.0-jre8声畏,如果不加tag撞叽,就寫tomcat,默認下載的是最新版本的鏡像插龄,即tomcat:latest
【創(chuàng)建前總是拉取鏡像】在第一次時需要勾選愿棋,如果本地已有鏡像,就不需要勾選了(避免反復拉取鏡像浪費感情)均牢。注意:如果你新建了一個本地鏡像糠雨,想直接生成容器,也不要勾選這一項徘跪,否則到鏡像庫里是找不到你新建的本地鏡像甘邀,就可能報錯。
這一步很重要垮庐,因為要映射的端口要事先添加好松邪,事后就無法添加端口了(事后添加新端口需要重建容器,即刪除原有容器)哨查,但是公開端口可以事先修改(比如8080端口映射成80端口逗抑,以后發(fā)現(xiàn)80端口需要被其他應用占用,那么就可以將8080端口改成映射為8080端口)寒亥。如下所示邮府,ganglia應用需要有大量的監(jiān)控端口,就全列上:
基本不需要設置該面板溉奕,唯一比較常見的是要在容器中添加環(huán)境變量褂傀,比如開啟SSL訪問的容器應用,就需要添加如下環(huán)境變量腐宋,docker run命令中包含的變量格式為:
-eREGISTRY_HTTP_TLS_CERTIFICATE=/root/certs/domain.crt -eREGISTRY_HTTP_TLS_KEY=/root/certs/domain.key
那么對應到設置面板里就如下(直接復制粘貼,變量和值自動填入以下輸入框):
一般也不需要設置該面板,但是卷的作用還是非常大胸竞,比如上面提到的安裝Rancher的命令欺嗤,通過設置卷就能讓容器里的數據固化到主機上(類似于ln軟鏈接的原理),避免容器刪除時卫枝,一些數據也隨著容器一起消亡煎饼,比如mysql數據服務。我們將上面Rancher的安裝命令涉及到卷的部分校赤,放到面板上設置吆玖,就如下所示:
格式說明:冒號前面是主機上的目錄,冒號后面是容器里的目錄马篮。
標準的Docker其實只有四種模式沾乘,橋接、容器浑测、主機翅阵、無,而且橋接Bridge是默認模式迁央,這里的橋接和虛擬機的橋接類似但不是一個概念掷匠,虛擬機的LinuxBridge相當于是一個虛擬交換機,但Docker Bridge要復雜的多岖圈,同時具備有 veth pair讹语,有網絡命名空間, 還有 NAT的特性蜂科。而Rancher下卻有五種網絡模式顽决,多了一個托管模式(Managed),而且還是默認模式崇摄,Managed網絡是通過IPsec來建立起安全隧道來保障各service之間可達性的擎值。相比于其他一些VPN技術,IPSec最大的優(yōu)勢在于其安全性逐抑;這種安全除了指業(yè)務數據加密傳輸外鸠儿,還包括了一套秘鑰交換的安全機制,這是諸如VXLAN之類的其他L3 VPN技術無法匹敵的厕氨。帶來了安全进每,但卻犧牲了網絡性能,Managed網絡表現(xiàn)出來的性能損耗較嚴重(當然這也與運行Rancher的主機配置有關)命斧,性能關系基本上按以下關系田晚,大家可以權衡一下用不同的網絡模式:
Host模式(安全性差) > Bridge模式(安全適中) > Managed模式(安全最高)
介紹一下五種網絡模式(橋接、容器国葬、主機贤徒、托管(默認模式)芹壕、無):
(1)[橋接Bridge]表示容器與主機是橋接關系(docker0網橋相當于是新路由器)
(2)[容器Container]表示與另一個容器共用一個虛擬網絡
(3)[主機Host]表示讓容器與主機共用一個網絡(在容器里用ifconfig命令看到的結果與主機上一模一樣,這種方式等于容器的隔離性沒了接奈,相當于成了宿主機上的一個進程服務)
(4)[托管Managed]表示容器與主機按照默認的網橋模式連接(相當于虛擬機的NAT模式踢涌,docker0網橋相當于是路由器)
(5)[無None]表示容器沒有網卡設備,需要通過別的手段配置網卡(基本上沒用到)
我們通常就只要用托管(Managed)模式或橋接(Bridge)模式序宦,對于集群化環(huán)境或是對網絡性能要求高一點的睁壁,建議采用橋接(Bridge)模式。比如想要頻繁操作容器互捌,用了橋接模式潘明,CLI連接或命令行連接相對要穩(wěn)定。
通過添加容器面板配置網絡模式的選項如下所示:
另外我們通過ifconfig可以看出托管(Managed)模式下秕噪,容器的IP隨機完全沒有規(guī)律:
而橋接(Bridge)模式下钳降,容器的IP網址生成比較有規(guī)律性(基本是0.2、0.3遞增)
這一項基本上不用配置巢价,除非你想對容器限制內存或CPU(默認不限制牲阁,就是完全共享主機的系統(tǒng)資源)、或者需要掛接外部設備壤躲,另外就是日志驅動的配置:
我們在使用Docker處理日志的時候多數是采用Dockerlogs 命令城菊,因為docker默認采用的log-driver是json-file,所以Docker會捕捉每一個容器進程STDOUTS和STDERR碉克,保存在磁盤文件.json.log中供Dockerlogs命令查詢凌唬。日常調試按默認基本上夠用,但是如果是要大規(guī)模集群化部署漏麦,還是需要有專業(yè)的日志系統(tǒng)客税,比如syslog + rsyslog + ELK(ElasticSearch、Logstash撕贞、Kibana)方案更耻,可以通過Rancher的應用商店去部署日志集成系統(tǒng),具體可以去網上找相關解決方案捏膨。
對于安全這塊秧均,有時候需要配置[主機完全訪問權限],對應的docker run容器指令為--privileged=true号涯,相當于是給容器擴權目胡,配置項如下:
具體作用不明誉己,密文將以指定的文件名映射到容器內的/run/secrets/的目錄下。而且密文需要事先定義好才能在該配置模板選擇設定域蜗。具體在【基礎架構à密文à添加密文】巨双。
對于健康檢查噪猾,一般不用配置,由Rancher平臺負責健康檢查筑累,如果需要對外提供容器健康檢查的接口畏妖,就需要配置,包括TCP接口和HTTP接口兩種方式疼阔,在下一節(jié)的添加和管理應用中,也可以通過添加外部服務來進行調取半夷。
標簽面板中婆廊,能添加容器的標簽,通過添加標簽(支持多個)來方便識別容器巫橄,基本上可以不用淘邻,但是如果是要構建負載均衡服務(在應用管理界面中添加),可以通過添加選擇器規(guī)則湘换,然后容器標簽就能作為規(guī)則條件來識別具體要負責均衡的目標容器宾舅。
Rancher比較智能的一點,就是主機的智能調度彩倚,比如你要添加一個容器筹我,Rancher會根據各個主機的空閑程度,自動分配一臺機器來部署新的容器帆离。
如果是在指定主機下蔬蕊,點擊添加容器,那么默認調度的是本機哥谷。如果是要更改岸夯,可以通過選擇在指定主機上運行,來設定不同的主機安裝容器们妥。
還有個功能是添加調度規(guī)則猜扮,這個在集群化部署中比較有用,就是在自動選擇符合調度規(guī)則的主機時监婶,我們可設定個規(guī)則旅赢,讓它必須按我們的規(guī)則選擇主機。比如按標簽規(guī)則:
從這里也看出添加主機時压储,配置標簽(Label)是多么重要鲜漩,我們很多時候可能真需要通過標簽來識別不同的主機,特別是在批量添加容器或應用時集惋。
配置上以上這些配置項后孕似,就可以點擊【創(chuàng)建】來完成容器的創(chuàng)建了。
通過容器詳細界面刮刑,可以看到容器的實時CPU喉祭、內存养渴、網絡、存儲IO指標泛烙,可以看到容器的所屬主機理卑、容器IP、Docker ID蔽氨、鏡像藐唠、映射的端口、卷信息鹉究、網絡模式宇立、調度信息等等。
容器的管理的其實只有重啟自赔、停止妈嘹、刪除、編輯外部映射端口這幾項有用绍妨,其他都沒什么用润脸,因為容器一旦創(chuàng)建,其生命周期就延續(xù)到消化刪除他去,很少在使用過程中還需要做調整和更改的(注意:主機面板上的停止毙驯、刪除容器操作其本上是針對獨立容器,應用容器建議在應用面板上管理操作)灾测。另一個最大的作業(yè)是執(zhí)行命令行:
執(zhí)行命令行尔苦,相當于是以界面的形式登錄到容器內部環(huán)境,這個比較好用行施,相當于可以連接到容器內部允坚,執(zhí)行一些 Linux命令,進行一些常規(guī)操作蛾号,比如容器應用的修改配置文件稠项。修改完還是需要重啟容器才能生效(這一點比直接通過命令的方式操作要方便),但是涉及到容器與宿主機之間的文件對拷鲜结,還是需要通過Linux命令來完成展运,因為在容器中沒有安裝SSH并開放22端口的情況下,是無法直接連接容器上傳文件的精刷,常用交互命令:
# 往容器中拷貝文件:
docker cp /home/testfile 容器ID:/home/
# 將容器中文件拷出:
docker cp 容器ID:/home/testfile /home/
# 在容器中安裝新的程序
docker run image_name apt-get install -y app_name
以[執(zhí)行命令行]的方式進入容器的效果圖如下:
對于網橋(Bridge)模式創(chuàng)建的容器拗胜,可以很方便的通過[執(zhí)行命令行]進行入,而對于以托管(Managed)模式創(chuàng)建的容器怒允,進入該窗口會不太穩(wěn)定雳灾,會受Rancher自身網絡的影響台谢。
通過應用的方式部署和管理容器劳较,是一種正確的思維夭拌,對于容器化來說,我們必須把應用程序進行拆解,降低維護管理的耦合性,而容器正是適應這種管理的最佳思維方式爬立。就拿Rancher管理平臺來說,就是一個完整的應用万哪,包括Rancher-Server侠驯、Rancher-Agent、healthcheck奕巍、ipsec等服務陵霉,而每個服務對應的是一個容器或多個容器(比如一個mysql服務是一個容器,添加成4個容器伍绳,就變成了一個包含4個節(jié)點的mysql服務),那么這些容器服務組合在一起才能提供完整的應用服務乍桂。所以服務是我們對外提供訪問的窗口冲杀,而應用是對外提供完整服務的集合,容器只是滿足耦合性和輕量化部署管理的最小單元睹酌。
同樣一個集群也可以包括多個應用权谁,一個應用包含多個服務或容器,比如Jmeter工具構建的一個集群憋沿,包括Jmeter-Master旺芽、Jmeter-Slaves、grafana監(jiān)控三大應用辐啄,而其中Jmeter-Slaves應用包含10個節(jié)點(即10個容器)采章、grafana監(jiān)控包含grafana和influxdb容器,而一個集群也可以作為一個完整的應用對外服務壶辜。
所以我們提倡通過應用的方式來組織管理容器化集群悯舟,避免單個容器的管理過于零散和不可控(應用管理下的容器就算在主機中被停也會再次下發(fā)重建命令,所以我們要權衡好砸民,畢竟獨立容器不受制管理平臺的啟停抵怎,雖然弱管理但靈活性也更強)。
Rancher的應用包含兩類岭参,用戶應用和基礎應用反惕,其中基礎應用屬于Rancher平臺自帶的我們不可動,用戶應用才是我們要維護和管理的演侯。
對于應用的管理界面姿染,可以看到有添加應用(自定義應用)和從應用商店添加兩個按鈕,我們一般只用添加自定義應用秒际,而應用商店里的應用類似于手機上的APP商店盔粹,都是一些成熟的應用隘梨,比如Hadoop+Yarn,一鍵安裝部署你想要的集群環(huán)境舷嗡。
在這里只介紹添加自定義應用:應用à用戶à添加應用轴猎,包括手動添加服務和compose配置添加兩種方式。
(1)手動添加服務
采用手動添加服務进萄,只需要輸入應用名捻脖,直接創(chuàng)建,然后在應用上點擊【添加服務】按鈕中鼠,默認添加的是普通服務(即容器)可婶、另外還能選擇添加負載均衡、服務別名援雇、外部服務矛渴。
添加負載均衡:這個比較有用,通過配置一個對外的HTTP(支持多種協(xié)議)及端口惫搏,并選擇一個服務(容器)具温,或者通過選擇器規(guī)則找到具體的服務(容器);具體的負載均衡配置可以參照:
https://blog.csdn.net/csdn_duomaomao/article/details/76216046
添加服務別名:這個不知道具體的用處筐赔,其實就相當于是添加了單個或多個服務的鏈接铣猩。
添加外部服務:就是將外部或第三方服務的接口封裝成一個服務,如第四節(jié)第7小節(jié)提到的健康檢查服務茴丰。
普通服務:普通服務就是跟上一節(jié)添加容器一樣的达皿,在這里就不細說了,但是這里可以實現(xiàn)添加一個容器和批量添加容器的功能(相當于拷貝復制同樣的容器到不同的主機上贿肩,但這些容器都屬于同一個服務下)峦椰,另外還可以通過添加從容器的方式,來實現(xiàn)自己需要的容器拷貝復制方式(這里的主從容器也是在一個服務下的)汰规。
在應用管理界面们何,手動點擊一個服務,可以打開服務詳情界面控轿,這個界面可以看到該服務下所關聯(lián)的容器冤竹,可以快捷管理和操作容器,另外還能快捷的添加容器:
說明:以上在一個服務下添加多個容器的方法茬射,需要注意的是如果創(chuàng)建的規(guī)則是在同一個主機上添加容器鹦蠕,容易出現(xiàn)端口沖突及其他沖突性問題。
(2)Compose方式添加服務
這是我們比較提倡的一種添加服務(容器)的方式在抛,我們可以選擇手動編輯Compose文件钟病,導入后就能自動創(chuàng)建一個應用或集群,也可以將當前的應用導出配置:
這個導出的配置是個compose.zip包,就相當是個備份肠阱,里面包含docker-compose.yml文件和rancher-compose.yml文件票唆,下次重建應用的時候直接導入就行。
關于docker-compose如何配置是個技術活屹徘,格式有一點錯誤創(chuàng)建應用時就會報錯走趋,具體可以上網找相關教程。
也只有通過compose文件部署應用和服務噪伊,我們才可以真正實現(xiàn)集群的一鍵安裝部署簿煌,雖然部署容器只有幾秒種的事情,但如果是部署幾十上百節(jié)點的應用集群(云計數環(huán)境下這都不算什么)鉴吹,一個個拉取鏡像和創(chuàng)建容器也會讓人崩潰的姨伟。
關于Docker的Compose認識及使用,參照網上文章:
https://www.cnblogs.com/52fhy/p/5991344.html
在應用界面我們可以看已添加的應用豆励,可以在此基礎上夺荒,繼續(xù)添加應用下的服務,也可以進行應用的增刪改閱操作良蒸。
(1)添加服務
我們可以在現(xiàn)有應用的基礎上繼續(xù)添加服務技扼,操作見上面的手動添加服務。
(2)停止服務
這里的停止服務诚啃,可以停掉應用下的所有服務和容器,相當于批量停止容器私沮,這就體現(xiàn)出管理工具的優(yōu)勢了始赎,重啟時也是一鍵重啟。
(3)查看圖形
這個功能在負載均衡下挺有用仔燕,一眼就能看出集群的拓撲圖造垛。
(4)查看配置
就是查看該應用的Compose配置,其實看多了各個應用的Compose配置晰搀,慢慢我們也會掌握編輯屬于自己的Compose文件五辽。
(5)導出配置
上面也提到了,可以將當前應用的Compose配置導出外恕,作為備份杆逗,下回重建應用時,直接導入就能一鍵創(chuàng)建應用集群服務鳞疲。
(6)刪除
刪除應用就能批量刪除應用下的服務和容器罪郊。這也是最方便的地位。
(7)API查看和編輯:這兩功能沒什么用尚洽,基本是擺設悔橄。
未完待續(xù)......