DevOps Docker 去中心化 容器

基礎知識打底必讀 Docker面試100題(一)

2019-02-11
本系列文章根據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映像檔的能力,而適當的回答如下:


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!