溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker新手最容易犯的錯誤有哪些

發(fā)布時間:2021-12-13 15:43:41 來源:億速云 閱讀:131 作者:iii 欄目:云計算

這篇文章主要介紹“Docker新手最容易犯的錯誤有哪些”,在日常操作中,相信很多人在Docker新手最容易犯的錯誤有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Docker新手最容易犯的錯誤有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Docker 的優(yōu)點很多,比如:

1、一體化——將操作系統(tǒng)、庫版本、配置文件、應用程序等全部打包裝在容器里。從而保證 QA 所測試的鏡像 (image) 會攜帶同樣的行為到達生產環(huán)境。
2、輕量——內存占用極小,只為主要過程分配內存。
3、快讀——一鍵啟動,就像啟動常見的 linux 過程一樣快。

盡管如此,眾多用戶仍然只是把容器當做常見的虛擬機,而忘記了容器的一個重要特性:
正因為這一特點,一些用戶需要改變他們對容器的觀念,為了更好的使用與發(fā)揮 Docker 容器的價值,有一些事情是絕對不應該做的:

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

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

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

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

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

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

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

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

9. 不要以 root 權限運行進程
“默認情況下,Docker 容器以 root 用戶權限運行。隨著 Docker 技術日趨成熟,能夠使用的安全默認選項越來越多。目前,要求 root 對其他用戶來說較為危險,另外,不是所有環(huán)境都能夠使用 root。鏡像應使用 USER 指令來為容器的運行指定非 root 用戶?!?/p>

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

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

到此,關于“Docker新手最容易犯的錯誤有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

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

AI