歡迎光臨
每天分享高質量文章

寫給新手的十一條 Docker 守則

作者:逆蝶_Snow

來源:見文末

很多人最終還是決定使用 Docker 解決問題。 Docker 的優點很多,比如:

  • 一體化——將作業系統、庫版本、配置檔案、應用程式等全部打包裝在容器裡。從而保證 QA 所測試的映象 (image) 會攜帶同樣的行為到達生產環境。

  • 輕量——記憶體佔用極小,只為主要過程分配記憶體。

  • 快讀——一鍵啟動,就像啟動常見的 linux 過程一樣快。

儘管如此,眾多使用者仍然只是把容器當做常見的虛擬機器,而忘記了容器的一個重要特性:

用後即棄

正因為這一特點,一些使用者需要改變他們對容器的觀念,為了更好的使用與發揮 Docker 容器的價值,有一些事情是絕對不應該做的: 

  1. 不要在容器(container)中儲存資料 容器可能會被中斷、被替換或遭到破壞。在容器中執行的 1.0 版應用程式很容易就會被 1.1 版取代,而不會對資料造成影響或導致資料丟失。因此,如果需要儲存資料,請儲存在捲 (volume) 中。在這一情況下,還應註意兩個容器是否會在同一個捲上寫入資料,這將導致損壞。請確保應用程式適用於寫入共享的資料儲存。

  2. 不要分兩部分傳送應用程式 有些人把容器當作虛擬機器,所以他們大多會認為,應該將應用程式部署到現有正在執行的容器中。在需要不斷部署和除錯的開發階段,可能確實如此;但對於 QA 和生產的持續交付 (CD) 渠道,應用程式應當是映象的一部分。切記:容器轉瞬即逝。

  3. 不要建立大尺寸映象 大尺寸的映象難以分配。請確保僅使用必需檔案和庫來執行應用程式。不要安裝不必要的資料包,也不要執行“更新”(yum update),這些操作會把大量檔案下載到新的映象層。

  4. 不要使用單層映象 為了有效利用多層檔案系統,請始終為作業系統建立屬於自己的基本映象層,然後為使用者名稱定義建立一個層,為執行時安裝建立一個層,為配置建立一個層,最後再為應用程式建立一個層。這樣,重新建立、管理和分配映象就會容易些。

  5. 不要從正在執行的容器中建立映象 換句話說,不要使用”docker commit”命令來建立映象。這一映象建立方法不可複製,因此應完全避免使用。請始終使用 Dockerfile 或其他任何可完全複製的 S21(從原始碼到映象)方法,如此一來,如果儲存在原始碼控制儲存庫 (GIT) 中,就可以跟蹤 Dockerfile 的變更情況。

  6. 不要只使用“最新版”標簽 最新版標簽就像 Maven 使用者的“快照”(SNAPSHOT) 一樣。容器具有多層檔案系統這一基本特徵,所以我們鼓勵使用標簽。相信誰也不願意在構建了幾個月的映象後,突然發現應用程式因為父層(即 Dockerfile 中的 FROM)被新版本取代而無法執行(新版本無法向後相容或從構建快取中檢索的“最新“版有誤)這樣的意外吧?在生產過程中部署容器時也應避免使用”最新版“標簽,這是因為無法跟蹤當前執行的映象版本。

  7. 不要在單個容器中執行一個以上行程 容器只執行一個行程(HTTP 守護行程、應用程式伺服器、資料庫)時效果最佳,但如果執行一個以上行程,在管理和檢索日誌以及單獨更新行程時就會遇到很多麻煩。

  8. 不要在映象中儲存證書及使用環境變數。 不要在映象中對任何使用者名稱/密碼進行硬編碼操作。請使用環境變數從容器外部檢索資訊。Postgres 映象就是這一原理的極佳詮釋。

  9. 不要以 root 許可權執行行程 “預設情況下,Docker 容器以 root 使用者許可權執行。(……)隨著 Docker 技術日趨成熟,能夠使用的安全預設選項越來越多。目前,要求 root 對其他使用者來說較為危險,另外,不是所有環境都能夠使用 root。映象應使用 USER 指令來為容器的執行指定非 root 使用者。”(摘自《Docker 映象作者指南》(Guidance for Docker Image Authors))

  10. 不要依賴 IP 地址 每個容器都有自己的內部 IP 地址,如果啟動然後停止容器,內部 IP 地址可能會發生變化。如果你的應用程式或微服務需要和另一個容器進行通訊,請使用環境變數在容器之間傳遞相應的主機名和埠。

  11. 監控容器 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好文請點選【閱讀原文】

    ↓↓↓

    贊(0)

    分享創造快樂