溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

十一條Docker守則分別是什么

發(fā)布時(shí)間:2021-10-12 10:06:11 來(lái)源:億速云 閱讀:113 作者:柒染 欄目:云計(jì)算

十一條Docker守則分別是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

很多人最終還是決定使用 Docker 解決問(wèn)題。 Docker 的優(yōu)點(diǎn)很多,比如:

  • 一體化——將操作系統(tǒng)、庫(kù)版本、配置文件、應(yīng)用程序等全部?打包裝在容器里。?從而保證 QA 所測(cè)試的鏡像 (image) 會(huì)攜帶同樣的行為到達(dá)生產(chǎn)環(huán)境。

  • 輕量——內(nèi)存占用極小,只為主要過(guò)程分配內(nèi)存。

  • 快讀——一鍵啟動(dòng),就像啟動(dòng)常見(jiàn)的 linux 過(guò)程一樣快。

盡管如此,眾多用戶仍然只是把容器當(dāng)做常見(jiàn)的虛擬機(jī),而忘記了容器的一個(gè)重要特性:

用后即棄

正因?yàn)檫@一特點(diǎn),一些用戶需要改變他們對(duì)容器的觀念,為了更好的使用與發(fā)揮 Docker 容器的價(jià)值,有一些事情是絕對(duì)不應(yīng)該做的: 1) Don’t store data in containers – A container can be stopped, destroyed, or replaced. An application version 1.0 running in container should be easily replaced by the version 1.1 without any impact or loss of data. For that reason, if you need to store data, do it in a volume. In this case, you should also take care if two containers write data on the same volume as it could cause corruption. Make sure your applications are designed to write to a shared data store.

  1. 不要在?容器(container)中存儲(chǔ)數(shù)據(jù) 容器可能會(huì)被中斷、被替換或遭到破壞。在容器中運(yùn)行的 1.0 版應(yīng)用程序很容易就會(huì)被 1.1 版取代,而不會(huì)對(duì)數(shù)據(jù)造成影響或?qū)е聰?shù)據(jù)丟失。因此,如果需要存儲(chǔ)數(shù)據(jù),請(qǐng)存儲(chǔ)在卷 (volume) 中。在這一情況下,還應(yīng)注意兩個(gè)容器是否會(huì)在同一個(gè)卷上寫(xiě)入數(shù)據(jù),這將導(dǎo)致?lián)p壞。請(qǐng)確保應(yīng)用程序適用于寫(xiě)入共享的數(shù)據(jù)存儲(chǔ)。

  2. 不要分兩部分傳送應(yīng)用程序 有些人把容器當(dāng)作虛擬機(jī),所以他們大多會(huì)認(rèn)為,應(yīng)該將應(yīng)用程序部署到現(xiàn)有正在運(yùn)行的容器中。在需要不斷部署和調(diào)試的開(kāi)發(fā)階段,可能確實(shí)如此;但對(duì)于 QA 和生產(chǎn)的持續(xù)交付 (CD) 渠道,應(yīng)用程序應(yīng)當(dāng)是鏡像的一部分。切記:容器轉(zhuǎn)瞬即逝。

  3. 不要?jiǎng)?chuàng)建大尺寸鏡像 大尺寸的鏡像難以分配。請(qǐng)確保僅使用必需文件和庫(kù)來(lái)運(yùn)行應(yīng)用程序。不要安裝不必要的數(shù)據(jù)包,也不要運(yùn)行“更新”(yum update),這些操作會(huì)把大量文件下載到新的鏡像層。

  4. 不要使用單層鏡像 為了有效利用多層文件系統(tǒng),請(qǐng)始終為操作系統(tǒng)創(chuàng)建屬于自己的基本鏡像層,然后為用戶名定義創(chuàng)建一個(gè)層,為運(yùn)行時(shí)安裝創(chuàng)建一個(gè)層,為配置創(chuàng)建一個(gè)層,最后再為應(yīng)用程序創(chuàng)建一個(gè)層。這樣,重新創(chuàng)建、管理和分配鏡像就會(huì)容易些。

  5. 不要從正在運(yùn)行的容器中創(chuàng)建鏡像 換句話說(shuō),不要使用"docker commit"命令來(lái)創(chuàng)建鏡像。這一鏡像創(chuàng)建方法不可復(fù)制,因此應(yīng)完全避免使用。請(qǐng)始終使用 Dockerfile 或其他任何可完全復(fù)制的 S21(從源代碼到鏡像)方法,如此一來(lái),如果存儲(chǔ)在源代碼控制存儲(chǔ)庫(kù) (GIT) 中,就可以跟蹤 Dockerfile 的變更情況。

  6. 不要只使用“最新版”標(biāo)簽 最新版標(biāo)簽就像 Maven 用戶的“快照”(SNAPSHOT) 一樣。容器具有多層文件系統(tǒng)這一基本特征,所以我們鼓勵(lì)使用標(biāo)簽。相信誰(shuí)也不愿意在構(gòu)建了幾個(gè)月的鏡像后,突然發(fā)現(xiàn)應(yīng)用程序因?yàn)楦笇樱?Dockerfile 中的 FROM)被新版本取代而無(wú)法運(yùn)行(新版本無(wú)法向后兼容或從構(gòu)建緩存中檢索的“最新“版有誤)這樣的意外吧?在生產(chǎn)過(guò)程中部署容器時(shí)也應(yīng)避免使用”最新版“標(biāo)簽,這是因?yàn)闊o(wú)法跟蹤當(dāng)前運(yùn)行的鏡像版本。

  7. 不要在單個(gè)容器中運(yùn)行一個(gè)以上進(jìn)程 容器只運(yùn)行一個(gè)?進(jìn)程(HTTP 守護(hù)進(jìn)程、應(yīng)用程序服務(wù)器、數(shù)據(jù)庫(kù))時(shí)效果最佳,但如果運(yùn)行一個(gè)以上進(jìn)程,在管理和檢索日志以及單獨(dú)更新進(jìn)程時(shí)就會(huì)遇到很多麻煩。

  8. 不要在鏡像中存儲(chǔ)?證書(shū)及使用環(huán)境變量。 不要在鏡像中對(duì)任何用戶名/密碼進(jìn)行硬編碼操作。請(qǐng)使用環(huán)境變量從容器外部檢索信息。Postgres 鏡像就是這一原理的極佳詮釋。

  9. 不要以 root 權(quán)限運(yùn)行進(jìn)程 “默認(rèn)情況下,Docker 容器以 root 用戶權(quán)限運(yùn)行。(……)隨著 Docker 技術(shù)日趨成熟,能夠使用的安全默認(rèn)選項(xiàng)越來(lái)越多。目前,要求 root 對(duì)其他用戶來(lái)說(shuō)較為危險(xiǎn),另外,不是所有環(huán)境都能夠使用 root。鏡像應(yīng)使用 USER 指令來(lái)為容器的運(yùn)行指定非 root 用戶?!保ㄕ浴禗ocker 鏡像作者指南》(Guidance for Docker Image Authors))

  10. 不要依賴 IP 地址 每個(gè)容器都有自己的內(nèi)部 IP 地址,如果啟動(dòng)然后停止容器,內(nèi)部 IP 地址可能會(huì)發(fā)生變化。如果你的應(yīng)用程序或微服務(wù)需要和另一個(gè)容器進(jìn)行通信,請(qǐng)使用環(huán)境變量在容器之間傳遞相應(yīng)的主機(jī)名和端口。

  11. 監(jiān)控容器 Docker 監(jiān)控已經(jīng)越來(lái)越受到開(kāi)發(fā)者們的重視,實(shí)時(shí)監(jiān)控 Docker 的方法,這里推薦 Cloudinsight。 不同于一些需要自寫(xiě)腳本的監(jiān)控手段,Cloudinsight 作為一家免費(fèi)的 SaaS 服務(wù),能夠一鍵監(jiān)控 Docker,?且擁有很棒的可視化界面。除此之外,Cloudinsight 還支持多種操作系統(tǒng)、數(shù)據(jù)庫(kù)等的監(jiān)控,能夠?一體化展示?所有被監(jiān)控的系統(tǒng)基礎(chǔ)組件的性能數(shù)據(jù)。

關(guān)于十一條Docker守則分別是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI