2019 DevOps 必備面試題——容器化和虛擬化

原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3
原文做者:Saurabh Kulshrestha
翻譯君:CODING 戴維奧普斯面試

讓咱們看看你對容器和虛擬機的瞭解程度。docker

Q1. 什麼是容器?

容器提供了從開發人員的筆記本電腦到測試環境、從類生產環境到生產環境一致的運行環境。json

接下來給出容器的定義,容器由一個完整的運行環境組成:將一個應用程序,以及它全部的依賴項、庫和其餘二進制文件,以及運行它所需的配置文件打包到一塊兒。將應用平臺及其依賴項容器化,能夠消除操做系統版本和底層基礎架構間的差別。網絡

圖片

Q2. 容器化相比虛擬化有哪些優點?

如下是容器化相對於虛擬化的優點:架構

  • 容器提供實時資源調配和可拓展性,虛擬機提供的資源調配速度較慢
  • 與虛擬機相比,容器是輕量級的
  • 與容器相比,虛擬機的性能有限
  • 與虛擬機相比,容器具備更好的資源利用率

Q3. 容器(在咱們的例子中指 Docker)與管理程序虛擬化(vSphere)有何不一樣?有哪些好處?

如下是一些不一樣之處。請確保在你的回答中包含這些差別:工具

圖片

Q4. 什麼是 Docker 鏡像?

Docker 鏡像是 Docker 容器的來源,換句話說,Docker 鏡像用於建立容器。使用 build 命令建立鏡像,當開始運行時,它們將生成一個容器。鏡像存儲在 Docker 註冊表中,如 registry.hub.docker.com,由於它們可能變得很是大,鏡像被設計成由其餘鏡像層組成,容許在經過網絡傳輸鏡像時發送最小的數據量。性能

提示:請關注 Dockerhub,以便回答有關預可用鏡像的問題。測試

Q5. 什麼是 Docker 容器?

這是一個很是重要的問題,因此請確保回答不偏離主題,我建議你遵循如下格式:
Docker 容器包括應用程序及其全部依賴項,但與其餘容器共享內核,在主機操做系統的用戶空間中做爲獨立進程運行。Docker 容器不綁定於任何特定的基礎架構:它們能夠在任何計算機、任何基礎架構和任何雲上運行。ui

如今解釋如何建立 Docker 容器:能夠經過建立 Docker 鏡像而後運行它來建立 Docker 容器,也可使用 Dockerhub 上已存在的 Docker 鏡像。
Docker 容器基本上是 Docker 鏡像的運行時實例。操作系統

Q6. 什麼是 Docker Hub?

Docker Hub 是一個基於雲的註冊表服務,容許你連接到代碼倉庫,構建並測試你的鏡像,存儲手動推送的鏡像以及指向 Docker 雲的連接,以便你能夠將鏡像部署到主機。它爲整個開發流程中的容器鏡像發現、分發和變動管理、用戶和團隊協做以及工做流自動化提供了集中的資源管理。

Q7. Docker 與其餘容器技術有何不一樣?

據我所知,你的答案應該包括如下幾點:
Docker 容器易於在雲上部署。與其餘技術相比,它能夠在相同硬件上運行更多應用程序,使開發人員能夠輕鬆地快速建立可當即運行的容器化應用程序,並使管理和部署應用程序變得更加容易。你甚至能夠與你的應用程序共享容器。

你也能夠補充更多要點,但要確保上述內容在你的回答中。

Q8. 什麼是 Docker Swarm?

它是 Docker 的本地集羣,它將 Docker 主機池轉換爲單個虛擬 Docker 主機。Docker Swarm 提供標準的 Docker API,任何已經與 Docker 守護進程通訊的工具均可以使用 Swarm 透明地擴展到多個主機。

我還建議你說起一些支持的工具:

  • Dokku
  • Docker Compose
  • Docker Machine
  • Jenkins

Q9. Dockerfile 的用途是什麼?

Docker 能夠經過從 Dockerfile 中讀取指令來自動構建鏡像。

Dockerfile 是一個配置文件,其中包含用戶能夠在命令行上調用以組合鏡像的全部命令。使用 Docker 構建用戶能夠建立一個連續執行多個命令行指令的自動構建。

如今可能會有幾個問題來測試你在 Docker 使用上的經驗。

Q10. 我能夠在 Docker 中使用 json 替代 yaml 來做爲個人 compose 文件嗎?

你可使用 json 替代 yaml 來做爲你的 compose 文件,使用帶有 compose 的 json 文件,請指定文件名,例如:
docker-compose -f docker-compose.json up

Q11. 你在過去的職位中是如何使用 Docker 的?

這裏須要解釋你如何使用 Docker 來幫助進行快速部署,以及如何編寫 Docker 腳本,並配合其餘工具如 Puppet、Chef 或 Jenkins 等來使用 Docker。若是你在 Docker 方面缺少以往的實踐經驗,可是在相似的領域中有過使用其餘工具的經驗,請誠實地告知並解釋相同的內容。在這種狀況下,若是您能夠將其餘工具與 Docker 在功能方面進行比較,這是有意義的。

Q12. 如何建立 Docker 容器?

關於這個我建議你給出一個直觀的回答——可使用如下命令使用 Docker 鏡像建立 Docker 容器:
docker run -t -i
此命令將建立並啓動容器。

你還應該提到,若是要檢查主機上全部狀態爲正在運行的容器的列表,須要使用如下命令:
docker ps -a

Q13. 如何中止並從新啓動 Docker 容器?

要中止 Docker 容器,可使用如下命令:
docker stop

如今從新啓動 Docker 容器,可使用如下命令:
docker restart

Q14. Docker 容器能夠擴展到什麼程度?

像 Google 和 Twitter 這樣的大型網絡部署,以及像 Heroku 和 DotCloud 這樣的平臺供應商都運行在容器技術上,規模達到幾十萬甚至數百萬個容器並行運行。

Q15. Docker 在什麼平臺上運行?

首先,我會說 Docker 一般在 Linux 和雲平臺上運行,而後我會提到如下 Linux 供應商:

  • Ubuntu 12.0四、13.04 等
  • Fedora 19/20+
  • RHEL 6.5+
  • CentOS 6+
  • Gentoo
  • ArchLinux
  • openSUSE 12.3+
  • CRUX 3.0+

Q16.當 Docker 容器退出時,我會丟失數據嗎?

你能夠這樣回答:當 Docker 容器退出時,我不會丟失個人數據。在你明確刪除容器前,應用程序寫入磁盤的任何數據都將保留在其容器中。即便在容器中止後,容器的文件系統仍然存在。

以上就是所有內容,我但願這些問題能幫助你破解 DevOps 面試!

相關文章
相關標籤/搜索