Docker 最佳实践
Docker 最佳實(shí)踐
【編者的話(huà)】本文是Docker使用過(guò)程中的一些最佳實(shí)踐。雖然很多都是老話(huà)重談,但是很多人在使用過(guò)程中還是沒(méi)有遵守,比如每個(gè)進(jìn)程只使用一個(gè)容器這個(gè)最佳實(shí)踐,有很多人都來(lái)問(wèn),如果不這樣行不行,當(dāng)然行,但是如果你想長(zhǎng)久的用Docker,那還是請(qǐng)遵守最佳實(shí)踐吧。
精益、簡(jiǎn)單,易于管理,這是Docker的精髓。最佳實(shí)踐可以確保你利用到Docker的所有優(yōu)勢(shì),使得這個(gè)強(qiáng)大工具能夠發(fā)揮最大的效果。本文的Docker最佳實(shí)踐可以幫助你學(xué)習(xí)使用已經(jīng)在開(kāi)發(fā)者中十分流行的Docker容器化技術(shù)。
使用可信任的Build
可信任Build讓一切變得簡(jiǎn)單。可信任的Build這個(gè)特性有助于簡(jiǎn)化和共享repository。關(guān)鍵之處是在push任何build之前在本地完成所有開(kāi)發(fā)和測(cè)試。如果你在本地構(gòu)建和測(cè)試容器,當(dāng)其被push到別的地方時(shí)也會(huì)用同樣的方式工作。
最少化Layer
太多的層次使得事情無(wú)端復(fù)雜,避免不必要的層次。要點(diǎn)是在可讀性和最少可能的層次間找到最優(yōu)平衡。只在真正需要增加層次的時(shí)候增加額外的層次。
每個(gè)進(jìn)程只使用一個(gè)容器
將應(yīng)用解耦合到不同的容器中,每個(gè)進(jìn)程一個(gè)容器。這使得系統(tǒng)更容易橫向擴(kuò)展,也使得容器可以再利用。處理相互依賴(lài)的服務(wù)時(shí),使用容器的關(guān)聯(lián)特性,而不是將它們直接放在同一個(gè)Docker容器里。
不要安裝不需要的Package
避免安裝不需要的package。這會(huì)幫助減少文件大小,減少依賴(lài)的復(fù)雜性,并且降低構(gòu)造時(shí)間。比如,在數(shù)據(jù)庫(kù)鏡像里就沒(méi)有必要安裝文本編輯器,這完全是在浪費(fèi)資源。任何時(shí)候盡可能地減少冗余。
使用DockerIgnore
DockerIngore可以很好得從構(gòu)建上下文以及最終鏡像里排除不必要的文件和目錄。這個(gè)特性使得容器可以更快更有效地加載,節(jié)省很多浪費(fèi)的啟動(dòng)時(shí)間。
構(gòu)建容易被替換的容器
容器是臨時(shí)的。也就是說(shuō),我們?cè)谠O(shè)計(jì)容器就應(yīng)該考慮到,僅用很少的步驟和配置就可以將其停止、刪除和替換。構(gòu)建Docker容器時(shí)就要考慮到之后這個(gè)容器如何能被輕易丟棄替換。
注意使用標(biāo)簽
Docker Build會(huì)生成一個(gè)易讀的標(biāo)簽,幫助人們更輕松地管理鏡像。使用-t選項(xiàng)就可以使用Docker Build特性。追本溯源,Docker容器化最佳實(shí)踐是關(guān)于如何讓容器更簡(jiǎn)單更純凈。避免任何會(huì)導(dǎo)致程序膨脹的不必要操作。時(shí)刻考慮到精簡(jiǎn),那么Docker就會(huì)回報(bào)給你靈活性,更少的啟動(dòng)時(shí)間以及更好的易用性。
原文發(fā)布時(shí)間:2015-01-30
本文來(lái)自云棲合作伙伴“l(fā)inux中國(guó)”
總結(jié)
以上是生活随笔為你收集整理的Docker 最佳实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《大数据系统构建:可扩展实时数据系统构建
- 下一篇: 高端唯有定制,把 sublime 打造成