Docker 引發了交付方式的變革,從交付代碼和文檔變成交付Docker鏡像乃至交付編排模板。
容器服務讓咱們能夠專一應用自己功能的開發,而無需關注基礎設施、應用部署、管理等等一大堆棘手的問題。html
愈來愈多的公司開始考慮使用Docker的方式部署和管理應用,以下降運維的成本。
同時,阿里雲容器服務團隊正在積極的推動國內 Docker 的發展,阿里雲在雲棲大會上宣佈和Docker公司戰略合做,將爲Docker Hub提供中國運營的基礎服務docker
說易行難,真正開始的時候又不知道具體該作什麼,會遇到哪些坑?
日前,阿里雲容器服務團隊進行了一次線上的圓桌互動,如下是提煉和總結數據庫
來自用戶的總結:
我的理解:具體到 Docker 技術在測試領域的應用,能夠體如今:
1)快速搭建兼容性測試環境tomcat
從Docker的鏡像與容器技術特色能夠預見,當被測應用要求在各種Web服務器、中間件、數據庫的組合環境中獲得充分驗證時,能夠快速地利用基礎Docker鏡像建立各種容器,裝載相應的技術組件並快速啓動運行,測試人員省去了大量花在測試環境搭建上的時間。服務器
2)快速搭建複雜分佈式測試環境網絡
Docker的輕量虛擬化特色決定了它能夠在一臺機器上(甚至是測試人員的一臺筆記本電腦上)輕鬆搭建出成百上千個分佈式節點的容器環境,從而模擬之前須要耗費大量時間和機器資源才能搭建出來的分佈式複雜測試環境。架構
3)持續集成運維
Docker能夠快速建立和撤銷容器,在持續集成的環境中,能夠頻繁和快速地進行部署和驗證工做dom
精彩問答:
hyper_x問:如何平滑遷移到Docker ?合適的容器調度管理平臺有推薦嗎?多主機跨容器通訊及性能問題怎麼處理?容器的監控及故障遷移恢復怎麼操做?socket
專家答:
遷移docker的時候,建議「慢慢來」,先把一些邊緣的、無狀態的應用放在容器裏運行,核心服務先不動,穩定以後再逐漸開始遷移重要應用。
遷移過程當中,可能會涉及到對應用訪問模式的改造,在條件容許的狀況下,好比業務壓力不是這麼大,能夠作一些改造。好比兩個應用原來是部署在一臺機器上,經過unix domain socket通訊,切換到Docker以後,推薦每一個容器只跑一個應用,可是在過渡期,作一個大鏡像,裏面放兩個應用也不是不能夠
容器管理方面,目前主要三個方面:k8s, swarm和mesos,很難說哪一個更好,您能夠都嘗試下。阿里雲的容器服務採用的是swarm的模式,集成了阿里雲的一些基礎服務:日誌、監控、存儲等,在調度等方面作了不少優化,你也可使用看看。
容器跨主機通訊,Docker自己提供了overlay network,也有一些開源的軟件 Flannel calico,按照底層網絡模式分,overlay flannel weave等是vxlan的方式,須要對packet封裝和解封,性能上差一些,calico 使用 BGP 協議直接路由,可是對底層的網絡模型要求較高。容器服務提供了針對阿里雲的VPC的 Docker 插件,容器之間的數據包不須要封裝操做,性能幾乎和VPC內兩臺ecs通訊性能同樣。
故障遷移和恢復,這個在容器服務中是原生支持的。監控方面能夠參考下咱們的幫助文檔: https://help.aliyun.com/docum...
rg小恆問:
1.Docker的方便我以爲是敏捷交付以及持續集成,在對集羣宿主機的資源利用上比虛擬主機方便一些,譬如容器遷移比vm遷移方便,我想問一下容器對於資源利用比直接跑在vm上是否是要好一些
2.假如個人應用是基於tomcat的,掛載volume是用宿主機的磁盤好一些仍是用nas,發佈新版本(譬如更換war包)有什麼好的方法,是我手動去替換volume裏邊的war包仍是觸發自動構建從新起一個tomcat容器,若是我只是想替換tomcat應用容器中的某些jsp文件呢
3.用阿雲的容器服務的時候,集羣默認會有etcd容器仍是須要本身起一個
4.容器的監控是用阿雲的監控便可仍是須要本身另尋他路,譬如用谷歌的cadvisor等
專家答:
更細粒度的資源管理能夠提升資源利用率,從物理機到虛擬機再到容器,資源的粒度在不斷細化。一臺VM上啓動多個容器能更充分的利用VM的資源,配合雲服務和自動調度等手段,能夠進一步提供資源利用率和下降資源成本。
docker推崇的作法是不可變基礎架構,變動的是鏡像而不是容器內的文件,因此每次發佈,要用新的war包構建一個新鏡像,再用新鏡像啓動應用。即便不說容器,在Java Web開發裏也不建議在生產環境裏熱更新JSP,生產環境要求的是可靠和高性能,替換jsp這種方式只能用在開發測試環境。
容器服務有etcd服務,但主要用於Docker daemon以及容器服務自身的agent,若是是您本身的業務上用到etcd,能夠本身起一個。
監控方面,容器服務默認就支持了。您能夠在控制檯頁面上查看每一個容器的實時監控信息,這些數據也會自動同步到雲監控,不須要額外配置。另外若是您本身有監控系統,也能夠經過配置把全部的監控數據發送到您的監控系統裏。能夠參考監控的文檔:https://help.aliyun.com/docum...
用戶問:有沒有鏡像製做的最佳實踐能夠參考?
專家答:
使用 Dockerfile 製做鏡像,不要用 docker commit
Dockerfile放在一個專門的目錄裏,其中只包含製做鏡像所需的文件(若是分離構建和鏡像製做,這裏只放構建後的包,不要放源碼)。
必要的時候可使用.dockerignore
減小層數量,Dockerfile 裏用 RUN 的時候,一個RUN後面跟多個命令,命令之間用&&分割
常常變化的內容放在 Dockerfile 的後面,前面不變的部分能夠直接用 Cache,下降 Build 鏡像的時間
更多內容歡迎關注 阿里雲容器服務官方頁面,https://www.aliyun.com/produc...