【15】進大廠必須掌握的面試題-容器化和虛擬化面試
Q1。什麼是容器?
我的建議是首先解釋對容器化的需求,容器用於提供一致的計算環境,從開發人員的筆記本電腦到測試環境,從過渡環境到生產環境。
現在給出容器的定義,一個容器包含一個完整的運行時環境:一個應用程序,及其所有依賴項,庫和其他二進制文件,以及運行該文件所需的配置文件,這些文件捆綁在一個程序包中。容器化應用程序平台及其依賴項可消除OS分佈和基礎架構中的差異。
Q2。與虛擬化相比,容器化提供了哪些優勢?
以下是容器化相對於虛擬化的優勢:
- 容器提供實時配置和可伸縮性,但虛擬機提供緩慢的配置
- 與虛擬機相比,容器輕巧
- 與容器相比,VM的性能有限
- 與VM相比,容器具有更好的資源利用率
Q3。容器(在我們的例子中為Docker)與虛擬機管理程序虛擬化(vSphere)有何不同?有什麼好處?
下面給出一些區別。確保在回答中包括以下差異:
Q4。什麼是Docker映像?
Docker映像是Docker容器的來源。換句話說,Docker映像用於創建容器。圖像是使用build命令創建的,開始運行時它們會產生一個容器。圖像存儲在Docker註冊表中,例如registry.hub.docker.com,因為它們可能會變得很大,圖像被設計為由其他圖像層組成,從而在通過網絡傳輸圖像時僅發送少量數據。
Q5。什麼是Docker容器?
這是一個非常重要的問題,因此請確保您不偏離本主題。我建議您遵循以下格式:
Docker容器包括應用程序及其所有依賴項,但與其他容器共享內核,並在主機操作系統上的用戶空間中作為隔離的進程運行。Docker容器不依賴於任何特定的基礎架構:它們可以在任何計算機,任何基礎架構和任何雲中運行。
現在說明如何創建Docker容器。可以通過創建Docker映像然後運行它來創建Docker容器,也可以使用Dockerhub上存在的Docker映像。
Docker容器基本上是Docker映像的運行時實例。
Q6。什麼是Docker Hub?
這個問題的答案很直接。Docker Hub是一項基於雲的註冊表服務,可讓您鏈接到代碼存儲庫,構建映像並對其進行測試,存儲手動推送的映像以及與Docker雲的鏈接,以便您可以將映像部署到主機。它為整個開發流程中的容器映像發現,分發和變更管理,用戶和團隊協作以及工作流自動化提供了集中式資源。
Q7。 Docker與其他容器技術有何不同?
根據我的說法,您的答案應該
包含以下幾點:Docker容器易於部署在雲中。與其他技術相比,它可以使更多的應用程序在同一硬件上運行,這使開發人員可以輕鬆快速地創建可立即運行的容器化應用程序,並使管理和部署應用程序更加容易。您甚至可以與應用程序共享容器。
如果您還有其他要點,可以這樣做,但請確保您的答案中有上面的解釋。
Q8。 什麼是Docker Swarm?
您應該通過解釋Docker Swarn開始這個答案。它是Docker的本機集群,可將Docker主機池轉換為單個虛擬Docker主機。Docker Swarm提供了標準的Docker API,任何已經與Docker守護程序通信的工具都可以使用Swarm透明地擴展到多個主機。
我還將建議您包括一些受支持的工具:
- 獨庫
- Docker撰寫
- Docker機器
- jenkins
Q9。Dockerfile的作用是什麼?
根據我的回答,應該從解釋Dockerfile的使用開始。Docker可以通過閱讀Dockerfile中的指令來自動構建映像。
現在,我建議您給Dockerfle一個小定義。Dockerfile是一個文本文檔,其中包含用戶可以在命令行上調用以組裝映像的所有命令。使用docker build的用戶可以創建自動執行的構建,該構建可以連續執行多個命令行指令。
Q10。 我可以在Docker中的撰寫文件中使用json而不是yaml嗎?
您可以將json而不是yaml用於撰寫文件,以將json文件與compose一起使用,指定要使用的文件名,例如:
docker-compose -f docker-compose.json up
Q11。 告訴我們您過去使用Docker的方式嗎?
說明您如何使用Docker來幫助快速部署。說明您如何編寫Docker腳本並將Docker與其他工具(如Puppet,Chef或Jenkins)一起使用。如果您以前沒有使用過Docker的實踐經驗,也沒有使用過類似領域其他工具的經驗,請誠實並進行相同的解釋。在這種情況下,就功能而言,是否可以將其他工具與Docker進行比較是有意義的。
Q12。如何創建Docker容器?
我建議您直接回答。我們可以通過以下命令使用Docker映像創建Docker容器:
**docker run -t -i <映像名稱> <命令名稱>
**此命令將創建並啟動容器。
您還應該添加,如果要檢查主機上所有運行容器的列表以及狀態,請使用以下命令:
docker ps -a
Q13。如何停止並重新啟動Docker容器?
為了停止Docker容器,您可以使用以下命令:
docker stop <容器ID>
現在要重新啟動Docker容器,您可以使用:
docker restart <容器ID>
Q14。Docker容器可擴展到多遠?
諸如Google和Twitter之類的大型Web部署以及諸如Heroku和dotCloud之類的平台提供商都基於容器技術運行,並行運行的容器數以十萬甚至數百萬計。
Q15。Docker在什麼平台上運行?
首先,我將說Docker僅在Linux和Cloud平台上運行,然後再提及以下Linux供應商:
- Ubuntu 12.04、13.04等
- Fedora 19/20 +
- RHEL 6.5+
- CentOS 6以上
- Gentoo
- ArchLinux
- openSUSE 12.3+
- CRUX 3.0+
云:
- Amazon EC2
- Google Compute Engine
- Microsoft Azure
- Rackspace
- Alibaba
Q16。Docker容器退出時是否會丟失數據?
您可以這樣說:不,當Dcoker容器退出時,不會丟失數據。應用程序寫入磁盤的所有數據都會保留在其容器中,直到您明確刪除該容器為止。即使在容器停止後,該容器的文件系統仍然存在。