《Linux中使用Docker容器不能忽略的10件事!》要點:
本文介紹了Linux中使用Docker容器不能忽略的10件事!,希望對您有用。如果有疑問,可以聯系我們。
Docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的?Linux?機器上,也可以實現虛擬化.
當你真正投入容器Docker的懷抱,不但可以發(fā)現它能解決很多問題,而且還具有眾多的優(yōu)點:
但是,許多用戶依然像對待典型的虛擬機那樣對待容器.但是他們都忘記了除了與虛擬機相似的部分,容器還有一個很大的優(yōu)點:它是一次性的.
容器的?準則?:
“容器是臨時的”
這個特性“本身”促使用戶改變他們關于使用和管理容器的習慣;我將會向您解釋在容器中不應該做這些事,以確保最大地發(fā)揮容器的作用.
1) 不要在容器中存儲數據?– ?容器可能被停止,銷毀,或替換.一個運行在容器中的程序版本1.0,應該很容易被1.1的版本替換且不影響或損失數據.有鑒于此,如果你需要存儲數據,請存在卷中,并且注意如果兩個容器在同一個卷上寫數據會導致崩潰.確保你的應用被設計成在共享數據存儲上寫入.
2) 不要將你的應用發(fā)布兩份?– ?一些人將容器視為虛擬機.他們中的大多數傾向于認為他們應該在現有的運行容器里發(fā)布自己的應用.在開發(fā)階段這樣是對的,此時你需要不斷地部署與調試;但對于質量保證與生產中的一個連續(xù)部署的管道,你的應用本該成為鏡像的一部分.記住:容器應該保持不變.
3) 不要創(chuàng)建超大鏡像?– 一個超大鏡像只會難以分發(fā).確保你僅有運行你應用/進程的必需的文件和庫.不要安裝不必要的包或在創(chuàng)建中運行更新(yum更新).
4) 不要使用單層鏡像?– 要對分層文件系統(tǒng)有更合理的使用,始終為你的操作系統(tǒng)創(chuàng)建你自己的基礎鏡像層,另外一層為安全和用戶定義,一層為庫的安裝,一層為配置,最后一層為應用.這將易于重建和管理一個鏡像,也易于分發(fā).
5) 不要為運行中的容器創(chuàng)建鏡像?– 換言之,不要使用“docker commit”命令來創(chuàng)建鏡像.這種創(chuàng)建鏡像的方法是不可重現的也不能版本化,應該徹底避免.始終使用Dockerfile或任何其他的可完全重現的S2I(源至鏡像)方法.
6) 不要只使用“最新”標簽?– 最新標簽就像Maven用戶的“快照”.標簽是被鼓勵使用的,尤其是當你有一個分層的文件系統(tǒng).你總不希望當你2個月之后創(chuàng)建鏡像時,驚訝地發(fā)現你的應用無法運行,因為最頂的分層被非向后兼容的新版本替換,或者創(chuàng)建緩存中有一個錯誤的“最新”版本.在生產中部署容器時應避免使用最新.
7) 不要在單一容器中運行超過一個進程?– 容器能完美地運行單個進程(http守護進程,應用服務器,數據庫),但是如果你不止有一個進程,管理、獲取日志、獨立更新都會遇到麻煩.
8) 不要在鏡像中存儲憑據.使用環(huán)境變量?–不要將鏡像中的任何用戶名/密碼寫死.使用環(huán)境變量來從容器外部獲取此信息.
9) 使用非root用戶運行進程?–?“docker容器默認以root運行.(…)隨著docker的成熟,更多的安全默認選項變得可用.現如今,請求root對于其他人是危險的,可能無法在所有環(huán)境中可用.你的鏡像應該使用USER指令來指令容器的一個非root用戶來運行.”
10) 不要依賴IP地址?– 每個容器都有自己的內部IP地址,如果你啟動并停止它地址可能會變化.如果你的應用或微服務需要與其他容器通訊,使用任何命名與(或者)環(huán)境變量來從一個容器傳遞合適信息到另一個.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4553.html