摘要:選擇是因?yàn)榕笥压驹谑褂茫渴鹨约肮芾矶己芊奖悖詤⒖剂怂耐扑]選擇了。因?yàn)橐彩堑谝淮螄L試將服務(wù)遷到。原因容器并不認(rèn)為這個(gè)文件是它自己的,嚴(yán)格來說這個(gè)文件應(yīng)該是屬于宿主機(jī)的。
一、前言
我自己都對(duì)我自己博客記錄的次數(shù)太少感到無語(yǔ)了~...
目前公司是沒有使用docker的,因而自己希望對(duì)此作出改變,將服務(wù)都部署到docker容器中。
在這里是有幾個(gè)方面是要考慮的:
1.怎么去部署docker容器?
2.對(duì)于鏡像和容器該怎么去統(tǒng)一管理?
3.使用docker發(fā)生線上故障該如何排查處理?
4.使用docker的時(shí)候有哪些方面需要注意的?
因?yàn)橐郧暗墓疽矝]有使用過docker,所以這次算是摸石頭過河~
二、怎么去部署docker容器部署docker容器有多種方式:
1.使用jenkins + git自動(dòng)化部署(當(dāng)然了我們公司運(yùn)維都沒有。。只能靠自己打包放服務(wù)器部署了) 2.使用maven的docker 插件打包成鏡像(大致是這樣。。) 3.創(chuàng)建好一個(gè)包含java環(huán)境的鏡像,將某個(gè)文件夾掛載到容器上,后續(xù)更新服務(wù)的時(shí)候直接丟jar包到這個(gè)文件夾中重啟容器就可以了
在這里我采用第三種方式。
在這里我編寫了一個(gè)較簡(jiǎn)單的Dockerfile 去構(gòu)建鏡像:
FROM java:8 VOLUME /tmp WORKDIR /app RUN bash -c "touch /app/app.jar" EXPOSE 9110 ENTRYPOINT ["java", "-jar", "/app/bigdata-1.0.jar", "&"]
編寫后使用構(gòu)建鏡像命令:docker build -t xxx . (XXX為要構(gòu)建的鏡像名 注意最后的一個(gè) .要加上)
如果需要暴露多個(gè)端口,比如開放JMX端口,則加在EXPOSE中
然后啟動(dòng)容器:docker run --name docker-bigdata -d -v /mnt/bigdata/docker-bigdata:/app -p 9110:9110 bad1deaec0b1
將jar包和外置配置的Config目錄一起放在docker-bigdata目錄里,掛載到容器的/app目錄上,容器啟動(dòng)的時(shí)候會(huì)自己執(zhí)行Dockerfile中的命令。
到這里的時(shí)候服務(wù)已經(jīng)啟動(dòng)成功了。
三、怎么去管理docker中的容器或鏡像使用可視化的UI界面管理。這里有幾個(gè)選擇:
1.k8s 2.swarm 3.portainer
當(dāng)然了還有其他工具可以選擇。
在這里我們首選k8s,因?yàn)樗梢宰龅揭恍└?xì)化的操作。但是因?yàn)閷W(xué)習(xí)成本太高,以及服務(wù)太少,這里我們略過選擇。
swarm是最貼合docker的,服務(wù)比較少的時(shí)候選擇swarm是不錯(cuò)的選擇,但是因?yàn)樽约毫私獾谋容^少,所以不作選擇。
選擇portainer是因?yàn)榕笥压驹谑褂茫渴鹨约肮芾矶己芊奖悖詤⒖剂怂耐扑]選擇了portainer。
portainer的使用非常簡(jiǎn)單:
1.docker上面有portainer的鏡像,可以直接拉取下來
2.使用命令:docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name portainer docker.io/portainer/portainer
這里--restart=always設(shè)置關(guān)閉后總是會(huì)自動(dòng)重啟,至于掛載/var/run/docker.sock:/var/run/docker.sock是必須的,不然進(jìn)入U(xiǎn)I界面的時(shí)候會(huì)提示你掛載。
3.啟動(dòng)成功后,使用http://ip:port 直接登錄,第一次登錄會(huì)設(shè)置賬號(hào)和密碼。
在這里應(yīng)該注冊(cè)個(gè)域名,將ip+port的訪問方式屏蔽掉。
這是portainer的管理界面,可以很方便的管理鏡像和容器,可以看到容器的運(yùn)行狀況(是否運(yùn)行以及CPU等狀況),實(shí)時(shí)日志,容器信息,甚至還可以以命令行方式進(jìn)入容器,具體一些管理操作等待后面熟悉。
在查看容器運(yùn)行的日志時(shí),發(fā)現(xiàn)容器和宿主機(jī)的時(shí)間不一致,有剛使用docker的朋友應(yīng)該注意一下。在Dockerfile中補(bǔ)上這段配置:
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone四、使用docker發(fā)生線上故障該如何排查處理或有哪些方面需要注意的?
其實(shí)我也不是很清楚。。。因?yàn)橐彩堑谝淮螄L試將服務(wù)遷到docker。
如果發(fā)生問題,如容器掛掉,則關(guān)注容器日志以及及時(shí)重啟。
要更新服務(wù),則到掛載的宿主機(jī)目錄里面更新jar包然后重啟容器就可以了。
在這里遇到問題:
1.容器時(shí)間與宿主機(jī)問題不一致,在上面已經(jīng)寫了怎么解決。
2.不能像之前一樣指定輸出控制臺(tái)日志到某個(gè)文件中,如java -jar xxx.jar >log 2>&1 & 是不行的。在Dockerfile中用ENTRYPOINT重定向輸出日志文件是不行的。原因:容器并不認(rèn)為這個(gè)文件是它自己的,嚴(yán)格來說這個(gè)文件應(yīng)該是屬于宿主機(jī)的。
我覺得可以通過將啟動(dòng)命令放置在腳本中,如:java -jar xxx.jar >log 2>&1 & ,將腳本掛載進(jìn)容器,在Dockerfile中運(yùn)行腳本文件,這樣子jar包啟動(dòng)的時(shí)候就會(huì)將控制臺(tái)輸出到log文件中,然后通過掛載顯示出來到宿主機(jī)中,方便問題排查。
現(xiàn)在正處于初步使用階段,如有后續(xù)問題我會(huì)繼續(xù)關(guān)注寫出來。如有在使用docker中遇到那些坑的朋友,歡迎留言討論~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/27878.html
摘要:選擇是因?yàn)榕笥压驹谑褂茫渴鹨约肮芾矶己芊奖悖詤⒖剂怂耐扑]選擇了。因?yàn)橐彩堑谝淮螄L試將服務(wù)遷到。原因容器并不認(rèn)為這個(gè)文件是它自己的,嚴(yán)格來說這個(gè)文件應(yīng)該是屬于宿主機(jī)的。 一、前言 我自己都對(duì)我自己博客記錄的次數(shù)太少感到無語(yǔ)了~... 目前公司是沒有使用docker的,因而自己希望對(duì)此作出改變,將服務(wù)都部署到docker容器中。 在這里是有幾個(gè)方面是要考慮的:1.怎么去部署doc...
摘要:宋體本文從拉勾網(wǎng)的業(yè)務(wù)架構(gòu)日志采集監(jiān)控服務(wù)暴露調(diào)用等方面介紹了其基于的容器化改造實(shí)踐。宋體此外,拉勾網(wǎng)還有一套自研的環(huán)境的業(yè)務(wù)發(fā)布系統(tǒng),不過這套發(fā)布系統(tǒng)未適配容器環(huán)境。寫在前面 拉勾網(wǎng)于 2019 年 3 月份開始嘗試將生產(chǎn)環(huán)境的業(yè)務(wù)從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環(huán)境的大部分業(yè)務(wù)模塊已經(jīng)完成容器化改造,生產(chǎn)環(huán)境中,后臺(tái)管理服務(wù)已全部遷移到 UK8...
摘要:容器云架構(gòu)方案。容器云架構(gòu)方案基于容器技術(shù),運(yùn)維技術(shù)團(tuán)隊(duì)開發(fā)了五阿哥網(wǎng)站的容器云平臺(tái)。多云對(duì)接私有云和公有云進(jìn)行統(tǒng)一托管,包含網(wǎng)絡(luò)區(qū)域配置,實(shí)例開通及的環(huán)境初始化配置等。技術(shù)選型及實(shí)踐鏡像標(biāo)準(zhǔn)眾所周知,的鏡像是分層的。 前言 五阿哥鋼鐵電商平臺(tái)(www.wuage.com)是由鋼鐵行業(yè)第一的中國(guó)五礦與互聯(lián)網(wǎng)第一的阿里巴巴聯(lián)手打造,并充分運(yùn)用雙方股東優(yōu)勢(shì)資源,即:阿里巴巴在大數(shù)據(jù)、電商運(yùn)...
摘要:相關(guān)基于項(xiàng)目和項(xiàng)目,并遵循應(yīng)用的十二因素風(fēng)格。相關(guān)在設(shè)計(jì)上,項(xiàng)目盡量保持驅(qū)動(dòng)和模塊化,以便模塊支持不同的實(shí)現(xiàn)方案。相關(guān)不僅可以管理眾多虛擬機(jī),其計(jì)算服務(wù)還支持對(duì)的驅(qū)動(dòng),管理引擎的子項(xiàng)目還可用于通過模板管理容器。現(xiàn)已整合公司所支持的項(xiàng)目。 整理自《Docker技術(shù)入門與實(shí)踐》 PaaS(Platform as a Service) PaaS 是希望提供一個(gè)統(tǒng)一的可供所有軟件直接運(yùn)行而無需...
閱讀 832·2023-04-25 22:13
閱讀 2344·2019-08-30 15:56
閱讀 2227·2019-08-30 11:21
閱讀 657·2019-08-30 11:13
閱讀 2021·2019-08-26 14:06
閱讀 1959·2019-08-26 12:11
閱讀 2291·2019-08-23 16:55
閱讀 540·2019-08-23 15:30