本系列文章根據Ajeet Singh Raina所寫的「Top 100 Docker Interview Questions」文章,翻譯轉載成一百個問題與答案,其中將Docker相關面試問題分成初級、中級和進階級。若你正在準備Docker相關工作的職缺面試,或渴望獲得Docker相關工具及知識,這些內容可能就是你最需要知道的。
Q4:是否可以在Docker容器中執行多個程序(Process)?
這是個蠻棘手的問題,面試官想要了解面試者對程序虛擬化方面具備何種程度的知識,Docker屬於程序等級的虛擬化技術,但它仍然可以執行多個程序或服務,而問這樣考題的用意在於明瞭是否真的有必要執行多個服務。
最妥當的回答是這樣:是的,可以在Docker容器中運行多個程序,但在多數的使用案例,並不贊同這樣的使用方式,為了最大化提升效率和隔離性,每個容器應該只專注在單一特定領域,然而,如果需要在單一容器中執行多個服務,可以使用像是supervisor這類工具,supervisor是頗為沉重的一種執行方式,依照需要管理各種不同的應用程式,必須要將supervisor和其配置檔放入映像檔中(或是基於已具有supervisord的映像檔),然後啟動supervisord,它便會管理這些程序。
舉例來說,你的主管指示需要在Docker容器中運行多個程序或服務,較為快速便利的方式是建立Dockerfile(圖2),其中使用supervisord來掌管所有相關服務,利用這樣的方式會有個Dockerfile,可預先撰寫好supervisord.conf,當中有my_first_process、my_second_process等檔案,並存放在與Dockerfile相同的目錄之下。
|
▲圖2 Supervisord的Dockerfile內容。 |
Q5:Docker是否可以在Linux、macOS和Windows上執行?
面試官之所以會提出這個問題,目的是找出面試者是否已在所有平台上使用過Docker。
最適當的回答是,可以在Docker容器中運行Linux和Windows程式的可執行檔,可原生執行在Linux(支援x86-64、ARM和其他CPU硬體架構)和Windows(x86-64)的Docker平台主機上(註三),Docker公司所推出的產品可讓使用者在Linux、Windows和macOS上建置並執行容器。舉例來說:
1. 若想在Linux上執行Docker,例如Ubuntu或Debian,可利用CLI指令來安裝:
? $ curl -sSL https://get.docker. com / | sh => 針對穩定版本 $ curl -sSL https://test.docker. com/ | sh => 針對技術預覽版
2. 如果要在RHEL或CentOS上安裝Docker,可能需要先設定軟體儲存庫,然後下載必要的Docker執行程式。
3. 如果要在Windows 10上安裝Docker,則需要依照Docker for Windows網頁的安裝步驟。
4. 如果要安裝Docker for Mac,亦可選擇安裝Edge或Stable版本
註三:Windows版的Docker,可執行Windows Container和Linux Container(透過Hyper-V),而Linux和macOS(透過HyperKit)則是執行Linux Container,原則上無法跨架構平台混用,Linux無法執行Windows Container,詳細說明可參考官方網頁說明(https://docs.docker.com/install/)。
Q6:Docker Hub是什麼?
這是面試官對於初階面試者可能會問的基本問題,目的在於測試面試者對構成Docker平台的Docker主要基本系統元件和服務的認識。
Docker Hub是一項容器映像檔儲存註冊的雲端服務(Docker Registry),允許連接到程式碼儲存庫,用於建置映像檔並測試,或手動Push映像檔來存放,且可連動Docker Cloud(https://cloud.docker.com/)來部署映像檔到其中的Host伺服器,它為整個容器開發流程中所需的容器映像檔探索、分派和變更管理,使用者與團隊合作,以及藉由開發流水線的自動化工作流程,提供了集中式資源管理。相關範例如下所示:
1. 從Docker Hub取得Docker映像檔
? $ docker pull ubuntu:16.04
2. 將映像檔推送到Docker Hub
? $ docker push /
3. 搜索在Docker Hub上面的Docker映像檔
? $ docker search ubuntu:
Q7:什麼是Dockerfile?
這對於初學者來說,是非常基本的問題,目的在於了解面試者是否已經具備建置任何Docker映像檔的能力,而適當的回答如下: