2022 年 Docker 新人和有經驗者面試問答
已發表: 2021-01-06當我們想像一艘船時,我們不可能忽略方向舵。 同樣,當我們想到 DevOps 時,我們必然會將 Docker 納入我們的思考範圍。 鑑於 DevOps 的未來範圍在當代背景下已經如此廣泛地擴展,因此必須了解 DevOps 所依賴的基礎是什麼。
Docker 和 DevOps 之間的一個公平類比是,建築物的基礎和同一建築物的不同樓層。 本質上,Docker 是構建 DevOps 的平台。 大多數自動化驅動的技術,反過來又在現代無處不在,需要構建和分發軟件應用程序的無縫渠道,以及持續維護這些應用程序,以便對可能出現的任何錯誤進行故障排除。
這正是 Docker 成為開發人員資產的地方。 因此,越來越多的企業正在嘗試將 Docker 集成到其技術帶寬中,以簡化操作並在系統中包含更多的自動化範圍。 難怪隨著對基於 Docker 的編程需求的增長,對具有 Docker 知識和專長的程序員的需求也將成正比增長。
如今,大多數 DevOps 和軟件開發的面試都涉及一個或多個關於 Dockery 的問題。 因此,在嘗試新的 DevOps 角色時,建議您提高您的 Docker 技能。 繼續閱讀以查找有關 Docker 的一些最常見的面試問題!
Docker 面試問答
1. 你會說 Docker 在今天很重要嗎? 為什麼或者為什麼不?
Docker 可以方便地將眾多軟件應用程序整合到一個系統中,無論是虛擬機還是物理硬件。 這反過來又使單個開發人員能夠向應用程序添加不同的維度,並從單個單元管理應用程序的多個方面。 因此,Docker 一直享有廣泛的客戶群,其中甚至包括一些知名人士。 為了說明這種流行背後的原因,讓我們以一個常見的電子錢包為例。

只需輕觸一個選項卡,您就可以購物、支付賬單和轉賬的應用程序需要一系列複雜的編程。 此類動態應用程序通常包含不同的元素,以不同的編程語言編寫腳本,或者也可能是用相同語言編碼的三個不同應用程序的合併。 通常,這只會在可以託管多個應用程序的特定類型的機器可用時運行。
但由於此類機器的可用性很少且相差甚遠,因此大多數開發人員求助於 Docker 來提出可行的解決方案。 Docker 為操作系統提供了一個主機,反過來,它可以支持多個應用程序及其各自的庫和依賴項。 這確實是一個開創性的解決方案,使企業能夠以具有成本效益的方式擴展他們的創新。
因此,在參加基於技術的面試時,如果一個人能夠以他們在 Docker 中的才能吸引招聘人員,那麼一個人就會自動超越其他人。
2. 為什麼我們需要 Docker?
正如上面示例中所解釋的,Web 應用程序通常包含它們自己的一組庫和依賴項。 因此,很難在不同的環境中運行它們並將它們與相關應用程序一起用於高級 DevOps。 作為這個難題的解決方案,Docker 提供了一個平台,可以將不同的應用程序及其庫和依賴項集成到一個虛擬容器中。
這使得多個容器包可以在一台機器上同時運行。 它為一致的開發、測試和部署提供了理想的環境。 Docker 已經成為 DevOps 工程師不可或缺的工具。
閱讀:面向初學者的 Docker 項目理念
3、Docker有什麼優勢?
一個統一的平台,將應用程序的所有元素打包並容器化,以促進生產和部署環境的流動性,這確實是所有開發人員的天賜之物。 這就是為什麼 Docker 在軟件開發領域一直享有盛譽的原因。 它具有一系列具體的優勢,反過來又促進了更敏捷和直觀的應用程序開發,並且是 DevOps 領域進步不可或缺的一部分。
- 在 Docker 的幫助下,可以將具有不同規格和要求的多個應用程序託管在一個單一的平台上。 這裡唯一的關鍵是應用程序必須具有兼容的操作系統要求。
- Docker 提供優化的存儲。 因此,許多應用程序可以存儲在一起,所有這些都不會耗盡大量磁盤空間。 這就是 Docker 容器的美妙之處,它僅在幾兆字節內就包含了整個範圍的應用程序。
- 通過在一個統一的平台上組合不同的應用程序,Docker 促進了持續和及時的軟件交付。
- 再一次,像 Docker 這樣的容器化解決方案在早期檢測和輕鬆解決問題方面非常有用。
- 如果沒有 Docker,同時部署多個應用程序的唯一可能方法是使用能夠託管不同應用程序的虛擬機。 但這需要巨大的內存空間。 作為一個強大的替代方案,Docker 將應用程序容器化,並且在沒有任何內置操作系統的情況下執行此操作。 而是在單台機器的目標操作系統上運行。 這提高了效率並有助於節省大量的內存空間。
- 從商業的角度來看,這可能帶來巨大的優勢。 首先,更簡單的部署直接轉化為更快地交付軟件功能和升級。 因此,企業不僅可以在更短的時間內迎合更多客戶,而且可以不斷升級服務以吸引新客戶。
- 由於使用 Docker 可以減少運行多個應用程序的硬件需求,因此在降低業務成本方面大有幫助。 通過使用 Docker,企業能夠以更具成本效益的方式為其產品增加價值。
4. 使用 Docker 有什麼缺點嗎?
儘管有諸多優勢,但 Docker 的部署和管理仍存在一個障礙。 這圍繞著操作系統的兼容性要求。 只有具有相同操作系統兼容性的應用程序才能與 Docker 一起容器化。 這需要對可以在 Docker 範圍內打包和運行的應用程序的類型和數量進行嚴格限制。
5. Docker 容器由什麼組成?
Docker 容器通常由一個應用程序及其所有庫和其他依賴項組成。 Docker 容器通過與其他幾個共享給定主機操作系統空間的容器共享內核來運行。 Docker 容器可以在任何地方運行,與環境無關。
它不需要任何特定的基礎設施。 它既可以在物理計算機系統上運行,也可以像任何云計算基礎設施一樣運行在虛擬機上。 可以將 Docker 容器想像為 Docker 映像的運行時實例。
6. Docker Image 是什麼意思?
解釋 Docker 映像和 Docker 容器之間關係的最佳方式是在藍圖和實際構建之間進行比較。 Docker 鏡像實際上是 Docker 容器的藍圖。
它基於 Docker 鏡像創建 Docker 容器。 一旦用戶運行 Docker 映像,就會創建一個實例 Docker 容器。 這些鏡像是使用 build 命令製作的,然後可以部署在任何基於 Docker 的環境中。
7. Docker 如何幫助構建與環境無關的系統?

Docker 的獨特之處在於它沒有任何基礎設施規範。 無論環境如何,它都可以在任何系統上運行。 Docker 的三個主要屬性使這成為可能。 只讀文件系統、捲和環境變量注入是 Docker 的三個特性,有助於構建與環境無關的系統。
8. 什麼是 Docker Hub?
正如我們所了解的,Docker 容器是建立在 Docker 鏡像的實例之上的。 正如 Docker 容器存儲在給定操作系統的內核中一樣,Docker 鏡像本身也需要一個駐留的地方。 此註冊表或 Docker 映像集合通常稱為 Docker Hub。 Docker Hub 是一個公開可用的 Docker 映像存儲庫,用戶可以在其中訪問 Docker 映像並創建自定義的 Docker 容器。
Docker Hub 存儲 Docker 鏡像,因為這些鏡像可能很大,並且使得將文件從存儲庫傳輸到用戶系統變得很麻煩。 為了避免 Docker Hub 中包含的鏡像由其他鏡像層組成。 因此,當發生傳輸時,只有少量數據通過網絡發送。
另請閱讀:印度的 Docker 工資
9. Docker 架構是由什麼組成的?
Docker 由三個主要組件組成,所有這些組件共同構成了 Docker 引擎,而 Docker 引擎又是 Docker 架構的核心。
Docker Engine 本質上是一個客戶端-服務器應用程序,是 Docker 平台的驅動力。 Docker 引擎負責 Docker 容器的整體功能。 它由三個重要元素組成。
Docker 引擎的第一個元素是服務器,它基本上是一個運行稱為守護程序的命令的進程。 它創建和管理 Docker 平台的每個部分,包括容器、映像、捲和網絡。
Docker 引擎的下一個組件是 REST API。 REST API 描述了服務器的功能。 它向服務器指示手頭的任務,並規定應用程序和服務器之間的交互如何進行。
最後,我們來到了 Docker Engine 的最後一個元素,即 Client。 客戶端就像用戶和 Docker 平台之間的橋樑。 它是一個命令行界面,可促進用戶和平台之間的各種形式的界面。
10. 什麼是 Dockerfile?
我們了解 Docker 架構的客戶端元素允許用戶使用命令行與平台進行交互。 此行命令以文本文檔的形式出現,用戶可以調用它來組裝 Docker 映像。
這個文本文檔只不過是一個 Dockerfile。 Dockerfile 由讀取哪些 Docker 可以自動構建圖像的指令組成。 使用 Dockerfile,Docker 能夠執行可以連續運行的各種命令行指令。
11. 能否提供一些常見的Dockerfile指令示例?
Dockerfile 是一個龐大的 Docker 命令集合。 然而,為了使用 Docker,每次都必須調用一些基本指令。
最常見的 Dockerfile 指令是“FROM”。 FROM 用於為任何 Docker 鏡像實例創建基礎鏡像。 它恰好是給定 Dockerfile 中的第一條指令。
由於大量 DevOps 工程師使用docker 來構建自動化,另一個常用的 Dockerfile 指令是“LABEL”。 LABEL 可以方便地根據特定項目、可用許可或模塊的要求組織 Docker 映像。 使用 LABEL,可以定義一個鍵值對,這反過來有助於以編程方式處理 Dockerfile。
RUN 是另一個常用的 Dockerfile 指令,用於有效升級 Docker 映像。 當想要在現有圖像之上的不同層上執行任何特定指令時,可以使用此命令。 RUN 命令用於向當前映像添加其他內容,這些內容可用於 Dockerfile 的後續步驟。
說到 Dockerfile 指令,不由得提到“CMD”。 CMD 用於將默認值分配給任何正在執行的 Docker 容器。 但是,如果使用了多個 CMD 命令,則最新的 CMD 命令對其餘命令具有壓倒性的效果。
12. Docker 中典型的工作流程是什麼?
由於 Docker 容器是從 Docker 映像構建的,因此 Docker 工作流程從 Docker 映像開始,而 Docker 映像又位於 Dockerfile 中。 創建 Dockerfile 是為了向 Docker Image 提供源代碼。 Dockerfile 源代碼用於構建 Docker Image。 創建後,Docker 映像將分發到 Docker Hub 等註冊表。
從註冊表中運行 Docker 映像,最終創建並執行 Docker 容器。 其中啟動 Docker 容器的生命週期。 Docker 容器的生命週期包括創建、運行、暫停或取消暫停,然後啟動、停止、然後重新啟動,最後被銷毀或殺死。
13. Docker 與其他容器化方法有什麼不同?

易用性和多功能性確實是 Docker 與其他容器化方法不同的兩個因素。 與任何其他容器化技術相比,它可以在同一硬件基礎架構中整合大量離散應用程序。 對於任何 DevOps 專業人士來說,Docker 的部署和維護也非常簡單。 更有趣的是,Docker 容器甚至可以在不同的應用程序之間共享。
14. Docker 有哪些應用領域?
Docker 在簡化配置、增強調試能力、更好地管理代碼管道以及隔離應用程序方面提供了有效的解決方案。 多租戶特性是另一個經常使用 Docker 的領域。
從世界頂級大學在線學習軟件工程課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
包起來
如果您有興趣了解有關 docker、全棧開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目,和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
