足球资料库数据/孙祥/nba五佳球/足球直播哪个平台好 - cctv5今日现场直播

首頁 > 知識庫 > 正文

使用Docker容器應該避免的10個事情
2016-03-04 15:25:13   來源: mengyidan1988   評論:0 點擊:

當你最后投入容器的懷抱,發現它能解決很多問題,而且還具有眾多的優點: 1 第一:它是不可變的 – 操作系統,庫版本,配置,文件夾和應用都是一樣的。您可以使用通過相同QA測試的鏡像,使產品具有相同的表現。 2 第二:它是輕量級的 – 容器的內存占用非常小。不需要幾百幾千MB,它只要對主進程分配內存再加上幾十MB。 3 第三:它很快速 – 啟動一個
當你最后投入容器的懷抱,發現它能解決很多問題,而且還具有眾多的優點:

1.第一:它是不可變的 – 操作系統,庫版本,配置,文件夾和應用都是一樣的。您可以使用通過相同QA測試的鏡像,使產品具有相同的表現。
2.第二:它是輕量級的 – 容器的內存占用非常小。不需要幾百幾千MB,它只要對主進程分配內存再加上幾十MB。
3.第三:它很快速 – 啟動一個容器與啟動一個單進程一樣快。不需要幾分鐘,您可以在幾秒鐘內啟動一個全新的容器。
但是,許多用戶依然像對待典型的虛擬機那樣對待容器。但是他們都忘記了除了與虛擬機相似的部分,容器還有一個很大的優點:它是一次性的。

容器的 準則 :

“容器是臨時的”

這個特性“本身”促使用戶改變他們關于使用和管理容器的習慣;我將會向您解釋在容器中不應該做這些事,以確保最大地發揮容器的作用。

1) 不要在容器中存儲數據 –  容器可能被停止,銷毀,或替換。一個運行在容器中的程序版本1.0,應該很容易被1.1的版本替換且不影響或損失數據。有鑒于此,如果你需要存儲數據,請存在卷中,并且注意如果兩個容器在同一個卷上寫數據會導致崩潰。確保你的應用被設計成在共享數據存儲上寫入。

2) 不要將你的應用發布兩份 –  一些人將容器視為虛擬機。他們中的大多數傾向于認為他們應該在現有的運行容器里發布自己的應用。在開發階段這樣是對的,此時你需要不斷地部署與調試;但對于質量保證與生產中的一個連續部署的管道,你的應用本該成為鏡像的一部分。記住:容器應該保持不變。

3) 不要創建超大鏡像 – 一個超大鏡像只會難以分發。確保你僅有運行你應用/進程的必需的文件和庫。不要安裝不必要的包或在創建中運行更新(yum更新)。

4) 不要使用單層鏡像 – 要對分層文件系統有更合理的使用,始終為你的操作系統創建你自己的基礎鏡像層,另外一層為安全和用戶定義,一層為庫的安裝,一層為配置,最后一層為應用。這將易于重建和管理一個鏡像,也易于分發。

5) 不要為運行中的容器創建鏡像 – 換言之,不要使用“docker commit”命令來創建鏡像。這種創建鏡像的方法是不可重現的也不能版本化,應該徹底避免。始終使用Dockerfile或任何其他的可完全重現的S2I(源至鏡像)方法。

6) 不要只使用“最新”標簽 – 最新標簽就像Maven用戶的“快照”。標簽是被鼓勵使用的,尤其是當你有一個分層的文件系統。你總不希望當你2個月之后創建鏡像時,驚訝地發現你的應用無法運行,因為最頂的分層被非向后兼容的新版本替換,或者創建緩存中有一個錯誤的“最新”版本。在生產中部署容器時應避免使用最新。

7) 不要在單一容器中運行超過一個進程 – 容器能完美地運行單個進程(http守護進程,應用服務器,數據庫),但是如果你不止有一個進程,管理、獲取日志、獨立更新都會遇到麻煩。

8) 不要在鏡像中存儲憑據。使用環境變量 –不要將鏡像中的任何用戶名/密碼寫死。使用環境變量來從容器外部獲取此信息。有一個不錯的例子是postgres鏡像。

9) 使用非root用戶運行進程 – “docker容器默認以root運行。(…)隨著docker的成熟,更多的安全默認選項變得可用。現如今,請求root對于其他人是危險的,可能無法在所有環境中可用。你的鏡像應該使用USER指令來指令容器的一個非root用戶來運行。”(來自 Docker鏡像作者指南)

10) 不要依賴IP地址 – 每個容器都有自己的內部IP地址,如果你啟動并停止它地址可能會變化。如果你的應用或微服務需要與其他容器通訊,使用任何命名與(或者)環境變量來從一個容器傳遞合適信息到另一個。

來自:開源中國

相關熱詞搜索:Docker 容器 industry 行業應用

上一篇:Swift編程的15個技巧
下一篇:DB-Engines 2016年3月數據庫排名:Redis成功超越SQLite

分享到: 收藏