原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3
原文作者:Saurabh Kulshrestha
翻譯君:CODING 戴維奧普斯
讓我們看看你對容器和虛擬機的了解程度。
Q1. 什么是容器?
容器提供了從開發人員的筆記本電腦到測試環境、從類生產環境到生產環境一致的運行環境。
接下來給出容器的定義,容器由一個完整的運行環境組成:將一個應用程序,以及它所有的依賴項、庫和其他二進制文件,以及運行它所需的配置文件打包到一起。將應用平台及其依賴項容器化,可以消除操作系統版本和底層基礎架構間的差異。
Q2. 容器化相比虛擬化有哪些優勢?
以下是容器化相對於虛擬化的優勢:
- 容器提供實時資源調配和可拓展性,虛擬機提供的資源調配速度較慢
- 與虛擬機相比,容器是輕量級的
- 與容器相比,虛擬機的性能有限
- 與虛擬機相比,容器具有更好的資源利用率
Q3. 容器(在我們的例子中指 Docker)與管理程序虛擬化(vSphere)有何不同?有哪些好處?
以下是一些不同之處。請確保在你的回答中包含這些差異:
Q4. 什么是 Docker 鏡像?
Docker 鏡像是 Docker 容器的來源,換句話說,Docker 鏡像用於創建容器。使用 build 命令創建鏡像,當開始運行時,它們將生成一個容器。鏡像存儲在 Docker 注冊表中,如 registry.hub.docker.com,因為它們可能變得非常大,鏡像被設計成由其他鏡像層組成,允許在通過網絡傳輸鏡像時發送最小的數據量。
提示:請關注 Dockerhub,以便回答有關預可用鏡像的問題。
Q5. 什么是 Docker 容器?
這是一個非常重要的問題,所以請確保回答不偏離主題,我建議你遵循以下格式:
Docker 容器包括應用程序及其所有依賴項,但與其他容器共享內核,在主機操作系統的用戶空間中作為獨立進程運行。Docker 容器不綁定於任何特定的基礎架構:它們可以在任何計算機、任何基礎架構和任何雲上運行。
現在解釋如何創建 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.04、13.04 等
- Fedora 19/20+
- RHEL 6.5+
- CentOS 6+
- Gentoo
- ArchLinux
- openSUSE 12.3+
- CRUX 3.0+
Q16.當 Docker 容器退出時,我會丟失數據嗎?
你可以這樣回答:當 Docker 容器退出時,我不會丟失我的數據。在你明確刪除容器前,應用程序寫入磁盤的任何數據都將保留在其容器中。即使在容器停止后,容器的文件系統仍然存在。
以上就是全部內容,我希望這些問題能幫助你破解 DevOps 面試!