作者:逆蝶_Snow
來源:見文末
很多人最終還是決定使用 Docker 解決問題。 Docker 的優點很多,比如:
-
一體化——將作業系統、庫版本、配置檔案、應用程式等全部打包裝在容器裡。從而保證 QA 所測試的映象 (image) 會攜帶同樣的行為到達生產環境。
-
輕量——記憶體佔用極小,只為主要過程分配記憶體。
-
快讀——一鍵啟動,就像啟動常見的 linux 過程一樣快。
儘管如此,眾多使用者仍然只是把容器當做常見的虛擬機器,而忘記了容器的一個重要特性:
用後即棄
正因為這一特點,一些使用者需要改變他們對容器的觀念,為了更好的使用與發揮 Docker 容器的價值,有一些事情是絕對不應該做的:
-
不要在容器(container)中儲存資料 容器可能會被中斷、被替換或遭到破壞。在容器中執行的 1.0 版應用程式很容易就會被 1.1 版取代,而不會對資料造成影響或導致資料丟失。因此,如果需要儲存資料,請儲存在捲 (volume) 中。在這一情況下,還應註意兩個容器是否會在同一個捲上寫入資料,這將導致損壞。請確保應用程式適用於寫入共享的資料儲存。
-
不要分兩部分傳送應用程式 有些人把容器當作虛擬機器,所以他們大多會認為,應該將應用程式部署到現有正在執行的容器中。在需要不斷部署和除錯的開發階段,可能確實如此;但對於 QA 和生產的持續交付 (CD) 渠道,應用程式應當是映象的一部分。切記:容器轉瞬即逝。
-
不要建立大尺寸映象 大尺寸的映象難以分配。請確保僅使用必需檔案和庫來執行應用程式。不要安裝不必要的資料包,也不要執行“更新”(yum update),這些操作會把大量檔案下載到新的映象層。
-
不要使用單層映象 為了有效利用多層檔案系統,請始終為作業系統建立屬於自己的基本映象層,然後為使用者名稱定義建立一個層,為執行時安裝建立一個層,為配置建立一個層,最後再為應用程式建立一個層。這樣,重新建立、管理和分配映象就會容易些。
-
不要從正在執行的容器中建立映象 換句話說,不要使用”docker commit”命令來建立映象。這一映象建立方法不可複製,因此應完全避免使用。請始終使用 Dockerfile 或其他任何可完全複製的 S21(從原始碼到映象)方法,如此一來,如果儲存在原始碼控制儲存庫 (GIT) 中,就可以跟蹤 Dockerfile 的變更情況。
-
不要只使用“最新版”標簽 最新版標簽就像 Maven 使用者的“快照”(SNAPSHOT) 一樣。容器具有多層檔案系統這一基本特徵,所以我們鼓勵使用標簽。相信誰也不願意在構建了幾個月的映象後,突然發現應用程式因為父層(即 Dockerfile 中的 FROM)被新版本取代而無法執行(新版本無法向後相容或從構建快取中檢索的“最新“版有誤)這樣的意外吧?在生產過程中部署容器時也應避免使用”最新版“標簽,這是因為無法跟蹤當前執行的映象版本。
-
不要在單個容器中執行一個以上行程 容器只執行一個行程(HTTP 守護行程、應用程式伺服器、資料庫)時效果最佳,但如果執行一個以上行程,在管理和檢索日誌以及單獨更新行程時就會遇到很多麻煩。
-
不要在映象中儲存證書及使用環境變數。 不要在映象中對任何使用者名稱/密碼進行硬編碼操作。請使用環境變數從容器外部檢索資訊。Postgres 映象就是這一原理的極佳詮釋。
-
不要以 root 許可權執行行程 “預設情況下,Docker 容器以 root 使用者許可權執行。(……)隨著 Docker 技術日趨成熟,能夠使用的安全預設選項越來越多。目前,要求 root 對其他使用者來說較為危險,另外,不是所有環境都能夠使用 root。映象應使用 USER 指令來為容器的執行指定非 root 使用者。”(摘自《Docker 映象作者指南》(Guidance for Docker Image Authors))
-
不要依賴 IP 地址 每個容器都有自己的內部 IP 地址,如果啟動然後停止容器,內部 IP 地址可能會發生變化。如果你的應用程式或微服務需要和另一個容器進行通訊,請使用環境變數在容器之間傳遞相應的主機名和埠。
-
監控容器 Docker 監控已經越來越受到開發者們的重視,實時監控 Docker 的方法,這裡推薦 Cloudinsight。 不同於一些需要自寫指令碼的監控手段,Cloudinsight 作為一家免費的 SaaS 服務,能夠一鍵監控 Docker,且擁有很棒的視覺化介面。除此之外,Cloudinsight 還支援多種作業系統、資料庫等的監控,能夠一體化展示所有被監控的系統基礎元件的效能資料。
遵守這十一條,你就是 Docker 高手了! 不是的話,去找原作者,科科。
作者:逆蝶_Snow
來源:見文末https://my.oschina.net/cllgeek/blog/1584759
《Linux雲端計算及運維架構師高薪實戰班》2018年07月16日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~
*宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。
– END –
更多Linux好文請點選【閱讀原文】哦
↓↓↓