Top 20 Docker 面試題(附答案)

編輯頁面封面

Docker 是一種流行的開源軟件平臺,可簡化創(chuàng)建、管理、運(yùn)行和分發(fā)應(yīng)用程序的過程。它使用容器來打包應(yīng)用程序及其依賴項。Docker 主導(dǎo)了市場。大多數(shù)頂級和 IT 公司都采用 Docker 來簡化其應(yīng)用程序開發(fā)工作流程。對具有 Docker 經(jīng)驗的申請人的需求很高。

破解 Docker 面試是獲得這些令人垂涎的角色之一的關(guān)鍵。我們收集了 40 大 Docker 面試問題,以幫助您準(zhǔn)備 Docker 面試。這個 Docker 教程包括問題和答案。讓我們開始吧!

Docker 面試問答

1. 什么是 Docker 容器?

Docker 容器在應(yīng)用程序?qū)觿?chuàng)建抽象并將應(yīng)用程序及其所有依賴項打包在一起。這使我們能夠快速可靠地部署應(yīng)用程序。容器不需要我們安裝不同的操作系統(tǒng)。相反,它們使用底層系統(tǒng)的 CPU 和內(nèi)存來執(zhí)行任務(wù)。這意味著任何容器化應(yīng)用程序都可以在任何平臺上運(yùn)行,而不管底層操作系統(tǒng)如何。我們也可以將容器視為 Docker 鏡像的運(yùn)行時實例。

2. 什么是 DockerFile?

Dockerfile 是一個文本文件,其中包含我們需要運(yùn)行以構(gòu)建 Docker 映像的所有命令。Docker 使用 Dockerfile 中的指令自動構(gòu)建鏡像。我們可以docker build用來創(chuàng)建按順序執(zhí)行多個命令行指令的自動構(gòu)建。

3. 如何從 Docker 鏡像創(chuàng)建 Docker 容器?

為了從鏡像創(chuàng)建容器,我們從 Docker 存儲庫中提取我們想要的鏡像并創(chuàng)建一個容器。我們可以使用以下命令:

1

$ docker run -it -d <image_name>

4. Docker Compose 可以使用 JSON 代替 YAML 嗎?

是的,我們可以對Docker Compose文件使用 JSON 文件而不是YAML

$ docker-compose -f docker-compose.json up

5. 什么是Docker Swarm?

Docker Swarm 是一個容器編排工具,它允許我們跨不同主機(jī)管理多個容器。使用 Swarm,我們可以將多個 Docker 主機(jī)變成單個主機(jī),以便于監(jiān)控和管理。

6. 如果你想使用一個基礎(chǔ)鏡像并對其進(jìn)行修改,你怎么做?

我們可以使用以下 Docker 命令將圖像從 Docker Hub 拉到我們的本地系統(tǒng)上:

$ docker pull <image_name>

7. 如何啟動、停止和終止容器?

要啟動 Docker 容器,請使用以下命令:

$ docker start <container_id>

要停止 Docker 容器,請使用以下命令:

$ docker stop <container_id>

要終止 Docker 容器,請使用以下命令:

$ docker kill <container_id>

8. Docker 運(yùn)行在哪些平臺上?

Docker 在以下 Linux 發(fā)行版上運(yùn)行:

  • CentOS 6+

  • Gentoo

  • ArchLinux

  • CRUX 3.0+

  • openSUSE 12.3+

  • RHEL 6.5+

  • Fedora 19/20+

  • Ubuntu 12.04、13.04

Docker 還可以通過以下云服務(wù)在生產(chǎn)中使用:

  • 微軟Azure
  • 谷歌計算引擎
  • 亞馬遜 AWS EC2
  • 亞馬遜 AWS ECS
  • 機(jī)架空間

提示:我們始終建議您在面試之前進(jìn)行一些公司研究。要為這個特定問題做準(zhǔn)備,請了解公司如何使用 Docker 并在您的答案中包含他們使用的平臺。

9. 解釋 Docker 組件。

三個架構(gòu)組件包括 Docker 客戶端、主機(jī)和注冊表。

  • Docker 客戶端:該組件執(zhí)行構(gòu)建和運(yùn)行操作以與 Docker 主機(jī)通信。

  • Docker 主機(jī):該組件包含 Docker 守護(hù)程序、Docker 鏡像和 Docker 容器。守護(hù)進(jìn)程建立到 Docker Registry 的連接。

  • Docker Registry:該組件存儲 Docker 鏡像。它可以是公共注冊表,例如 Docker Hub 或 Docker Cloud,也可以是私有注冊表。

10. 虛擬化和容器化有什么區(qū)別?

虛擬化

虛擬化幫助我們在單個物理服務(wù)器上運(yùn)行和托管多個操作系統(tǒng)。在虛擬化中,管理程序為客戶操作系統(tǒng)提供了一個虛擬機(jī)。VM 形成了硬件層的抽象,因此主機(jī)上的每個 VM 都可以充當(dāng)物理機(jī)。

容器化

容器化為我們提供了一個獨(dú)立的環(huán)境來運(yùn)行我們的應(yīng)用程序。我們可以在單個服務(wù)器或 VM 上使用相同的操作系統(tǒng)部署多個應(yīng)用程序。容器構(gòu)成了應(yīng)用層的抽象,所以每個容器代表一個不同的應(yīng)用。

11. 管理程序的功能是什么?

管理程序或虛擬機(jī)監(jiān)視器是幫助我們創(chuàng)建和運(yùn)行虛擬機(jī)的軟件。它使我們能夠使用單個主機(jī)來支持多個來賓虛擬機(jī)。它通過劃分主機(jī)的系統(tǒng)資源并將它們分配給已安裝的來賓環(huán)境來實現(xiàn)這一點。可以在單個主機(jī)操作系統(tǒng)上安裝多個操作系統(tǒng)。有兩種類型的管理程序:

  • Native:本機(jī)管理程序或裸機(jī)管理程序,直接在底層主機(jī)系統(tǒng)上運(yùn)行。它使我們可以直接訪問主機(jī)系統(tǒng)的硬件,并且不需要基本服務(wù)器操作系統(tǒng)。

  • 托管:托管管理程序使用底層主機(jī)操作系統(tǒng)。

12.如何構(gòu)建Dockerfile?

為了使用我們概述的規(guī)范創(chuàng)建映像,我們需要構(gòu)建一個 Dockerfile。要構(gòu)建 Dockerfile,我們可以使用以下docker build命令:

$ docker build <path to dockerfile>

13. 使用什么命令將新鏡像推送到 Docker Registry?

要將新鏡像推送到 Docker Registry,我們可以使用以下docker push命令:

$ docker push myorg/img

14.什么是Docker引擎?

Docker Engine 是一種開源容器化技術(shù),我們可以使用它來構(gòu)建和容器化我們的應(yīng)用程序。Docker Engine 由以下組件支持:

  • Docker 引擎 REST API
  • Docker 命令行界面 (CLI)
  • Docker 守護(hù)進(jìn)程

15. 如何訪問正在運(yùn)行的容器?

要訪問正在運(yùn)行的容器,我們可以使用以下命令:

$ docker exec -it <container_id> bash

16.如何列出所有正在運(yùn)行的容器?

要列出所有正在運(yùn)行的容器,我們可以使用以下命令:

$ docker ps

17. 描述 Docker 容器的生命周期。

Docker 容器經(jīng)歷以下階段:

  • 創(chuàng)建容器
  • 運(yùn)行容器
  • 暫停容器(可選)
  • 取消暫停容器(可選)
  • 啟動容器
  • 停止容器
  • 重啟容器
  • 殺死容器
  • 銷毀容器

18. 什么是Docker對象標(biāo)簽?

Docker 對象標(biāo)簽是存儲為字符串的鍵值對。它們使我們能夠?qū)⒃獢?shù)據(jù)添加到 Docker 對象,例如容器、網(wǎng)絡(luò)、本地守護(hù)進(jìn)程、圖像、Swarm 節(jié)點和服務(wù)。

19. 使用Docker Compose時如何保證容器1先于容器2運(yùn)行?

Docker Compose 在繼續(xù)下一個容器之前不會等待容器準(zhǔn)備就緒。為了控制我們的執(zhí)行順序,我們可以使用“取決于”條件,depends_on。這是在 docker-compose.yml 文件中使用的示例:

version: "2.4"

services:

 backend:

   build: .

   depends_on:

     - db

 db:

   image: postgres

docker-compose up命令將按照我們指定的依賴順序啟動和運(yùn)行服務(wù)。

20.docker create命令有什么作用?

docker create命令在指定映像上創(chuàng)建可寫容器層,并準(zhǔn)備該映像以運(yùn)行指定命令。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容