摘要:選擇是因為朋友公司在使用,部署以及管理都很方便,所以參考了他的推薦選擇了。因為也是第一次嘗試將服務遷到。原因容器并不認為這個文件是它自己的,嚴格來說這個文件應該是屬于宿主機的。
一、前言
我自己都對我自己博客記錄的次數太少感到無語了~...
目前公司是沒有使用docker的,因而自己希望對此作出改變,將服務都部署到docker容器中。
在這里是有幾個方面是要考慮的:
1.怎么去部署docker容器?
2.對于鏡像和容器該怎么去統一管理?
3.使用docker發生線上故障該如何排查處理?
4.使用docker的時候有哪些方面需要注意的?
因為以前的公司也沒有使用過docker,所以這次算是摸石頭過河~
二、怎么去部署docker容器部署docker容器有多種方式:
1.使用jenkins + git自動化部署(當然了我們公司運維都沒有。。只能靠自己打包放服務器部署了) 2.使用maven的docker 插件打包成鏡像(大致是這樣。。) 3.創建好一個包含java環境的鏡像,將某個文件夾掛載到容器上,后續更新服務的時候直接丟jar包到這個文件夾中重啟容器就可以了
在這里我采用第三種方式。
在這里我編寫了一個較簡單的Dockerfile 去構建鏡像:
FROM java:8 VOLUME /tmp WORKDIR /app RUN bash -c "touch /app/app.jar" EXPOSE 9110 ENTRYPOINT ["java", "-jar", "/app/bigdata-1.0.jar", "&"]
編寫后使用構建鏡像命令:docker build -t xxx . (XXX為要構建的鏡像名 注意最后的一個 .要加上)
如果需要暴露多個端口,比如開放JMX端口,則加在EXPOSE中
然后啟動容器:docker run --name docker-bigdata -d -v /mnt/bigdata/docker-bigdata:/app -p 9110:9110 bad1deaec0b1
將jar包和外置配置的Config目錄一起放在docker-bigdata目錄里,掛載到容器的/app目錄上,容器啟動的時候會自己執行Dockerfile中的命令。
到這里的時候服務已經啟動成功了。
三、怎么去管理docker中的容器或鏡像使用可視化的UI界面管理。這里有幾個選擇:
1.k8s 2.swarm 3.portainer
當然了還有其他工具可以選擇。
在這里我們首選k8s,因為它可以做到一些更精細化的操作。但是因為學習成本太高,以及服務太少,這里我們略過選擇。
swarm是最貼合docker的,服務比較少的時候選擇swarm是不錯的選擇,但是因為自己了解的比較少,所以不作選擇。
選擇portainer是因為朋友公司在使用,部署以及管理都很方便,所以參考了他的推薦選擇了portainer。
portainer的使用非常簡單:
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設置關閉后總是會自動重啟,至于掛載/var/run/docker.sock:/var/run/docker.sock是必須的,不然進入UI界面的時候會提示你掛載。
3.啟動成功后,使用http://ip:port 直接登錄,第一次登錄會設置賬號和密碼。
在這里應該注冊個域名,將ip+port的訪問方式屏蔽掉。
這是portainer的管理界面,可以很方便的管理鏡像和容器,可以看到容器的運行狀況(是否運行以及CPU等狀況),實時日志,容器信息,甚至還可以以命令行方式進入容器,具體一些管理操作等待后面熟悉。
在查看容器運行的日志時,發現容器和宿主機的時間不一致,有剛使用docker的朋友應該注意一下。在Dockerfile中補上這段配置:
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone四、使用docker發生線上故障該如何排查處理或有哪些方面需要注意的?
其實我也不是很清楚。。。因為也是第一次嘗試將服務遷到docker。
如果發生問題,如容器掛掉,則關注容器日志以及及時重啟。
要更新服務,則到掛載的宿主機目錄里面更新jar包然后重啟容器就可以了。
在這里遇到問題:
1.容器時間與宿主機問題不一致,在上面已經寫了怎么解決。
2.不能像之前一樣指定輸出控制臺日志到某個文件中,如java -jar xxx.jar >log 2>&1 & 是不行的。在Dockerfile中用ENTRYPOINT重定向輸出日志文件是不行的。原因:容器并不認為這個文件是它自己的,嚴格來說這個文件應該是屬于宿主機的。
我覺得可以通過將啟動命令放置在腳本中,如:java -jar xxx.jar >log 2>&1 & ,將腳本掛載進容器,在Dockerfile中運行腳本文件,這樣子jar包啟動的時候就會將控制臺輸出到log文件中,然后通過掛載顯示出來到宿主機中,方便問題排查。
現在正處于初步使用階段,如有后續問題我會繼續關注寫出來。如有在使用docker中遇到那些坑的朋友,歡迎留言討論~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74842.html
摘要:選擇是因為朋友公司在使用,部署以及管理都很方便,所以參考了他的推薦選擇了。因為也是第一次嘗試將服務遷到。原因容器并不認為這個文件是它自己的,嚴格來說這個文件應該是屬于宿主機的。 一、前言 我自己都對我自己博客記錄的次數太少感到無語了~... 目前公司是沒有使用docker的,因而自己希望對此作出改變,將服務都部署到docker容器中。 在這里是有幾個方面是要考慮的:1.怎么去部署doc...
摘要:宋體本文從拉勾網的業務架構日志采集監控服務暴露調用等方面介紹了其基于的容器化改造實踐。宋體此外,拉勾網還有一套自研的環境的業務發布系統,不過這套發布系統未適配容器環境。寫在前面 拉勾網于 2019 年 3 月份開始嘗試將生產環境的業務從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環境的大部分業務模塊已經完成容器化改造,生產環境中,后臺管理服務已全部遷移到 UK8...
摘要:容器云架構方案。容器云架構方案基于容器技術,運維技術團隊開發了五阿哥網站的容器云平臺。多云對接私有云和公有云進行統一托管,包含網絡區域配置,實例開通及的環境初始化配置等。技術選型及實踐鏡像標準眾所周知,的鏡像是分層的。 前言 五阿哥鋼鐵電商平臺(www.wuage.com)是由鋼鐵行業第一的中國五礦與互聯網第一的阿里巴巴聯手打造,并充分運用雙方股東優勢資源,即:阿里巴巴在大數據、電商運...
摘要:相關基于項目和項目,并遵循應用的十二因素風格。相關在設計上,項目盡量保持驅動和模塊化,以便模塊支持不同的實現方案。相關不僅可以管理眾多虛擬機,其計算服務還支持對的驅動,管理引擎的子項目還可用于通過模板管理容器。現已整合公司所支持的項目。 整理自《Docker技術入門與實踐》 PaaS(Platform as a Service) PaaS 是希望提供一個統一的可供所有軟件直接運行而無需...
閱讀 2890·2021-09-22 15:20
閱讀 2963·2021-09-22 15:19
閱讀 3464·2021-09-22 15:15
閱讀 2390·2021-09-08 09:35
閱讀 2378·2019-08-30 15:44
閱讀 3010·2019-08-30 10:50
閱讀 3735·2019-08-29 16:25
閱讀 1592·2019-08-26 13:55