DevOps Docker 去中心化 容器

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

2019-02-11
本系列文章根據Ajeet Singh Raina所寫的「Top 100 Docker Interview Questions」文章,翻譯轉載成一百個問題與答案,其中將Docker相關面試問題分成初級、中級和進階級。若你正在準備Docker相關工作的職缺面試,或渴望獲得Docker相關工具及知識,這些內容可能就是你最需要知道的。

Docker藉由讀取名稱為Dockerfile的文字檔來自動建置容器映像檔,它包含建置特定映像檔所需之依順序執行的所有命令,Dockerfile遵循特定格式和指令集,如下所示:

 

? FROM ubuntu CMD echo "This is a test." | wc

接著,進行操作示範。先來嘗試建立一個Docker映像檔並運行成Docker容器,首先新增名為cmd.Dockerfile檔案,並加入下列內容:

 

? FROM ubuntu CMD echo "This is a test." | wc

然後,建置Docker Image:

 

? docker build -t /mycmd -f ./cmd.Dockerfile

現在,啟動容器及其結果:

 

? $ docker run /mycmd 1 4 16

Q8:Dockerfile與Docker Compose有何不同?

Dockerfile是一個簡單的文字檔,其中包含使用者可以呼叫組裝映像檔的指令,而Docker Compose是用於定義和運行多個容器的Docker生態系相關工具。

Docker Compose是在docker-compose.yml檔案中定義其構成的應用系統服務,藉此讓它們可以在單一隔離環境中一起運行,只需執行「docker-compose up」一行指令,就能運行好一組應用程式。

若將build指令新增到專案底下的docker-compose.yml檔案中,Docker Compose便可使用其Dockerfile,Docker工作流程應該是為每個映像檔建立合適的Dockerfile,然後使用Compose透過build指令來組合那些映像檔。

Q9:可以在Docker Compose文件中使用JSON檔取代YAML檔嗎?

當然,YAML檔是JSON的父集合(Superset),因此任何JSON文件應該都是有效的YAML檔,欲在Compose中使用JSON檔案,需要特別地指定檔案的名稱,例如:

 

? docker-compose -f docker-compose. json up

可以使用json檔取代yaml當作Compose定義檔,使用json檔來配合Compose,指定其特定檔名來使用,例如:

 

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

Q10:如何建立Docker容器?

可以使用下列命令,利用Docker映像檔來新建Docker容器:

 

? $ docker run -t -i command

此指令將建立並啟動容器,如果要確認目前主機上所有仍在運行中的容器清單,則使用下面指令:

 

? $ docker ps -a

Q11:每台主機可執行的最大容器數量是多少?

實際上,取決於本身的系統環境、應用程式的大小,以及可用資源的數量(像是CPU),都會影響到環境中可運行的容器數量。

很遺憾的是,容器並非神奇魔法,它無法憑空創造出新的CPU,但這確實提供了一種更具效率的資源使用方式,容器本身是非常輕量的(千萬記住,作業系統式容器和應用系統式容器的差異),且唯有在它們正確使用並執行,才是如此輕盈(一個容器執行一種服務)。

Q12:如何推送個人的Docker映像檔到Azure Container Registry(ACR)?

在建立ACR時,在左側導覽頁選擇存取金鑰,選擇啟用管理使用者功能,透過在「管理使用者」下方的使用者名稱,與其中一組Password,就可皆由Docker登入來管理映像檔儲存,在將本地端Docker映像檔推送到ACR之前,先使用以下Docker指令來登入:

 

? $ docker login dockware.azurecr. io -u -p

標註本地端建置的映像檔,前綴名稱必須以ACR儲存庫來命名,才能推送到Azure Container Registry:

 

? $ docker tag dockware. azurecr.io/starterapp:latest

接著,使用下列指令來推送到ACR:

 

? $ docker push dockware.azurecr. io/starterapp:latest

確認自已的映像檔是否已存在映像檔儲存註冊庫中,可以使用此指令:

 

? $ az acr repository list -n

若以圖3為範例,便是下述指令:

 

▲圖3 Azure Container Registry設定。

 

? $ az acr repository list -n dockware [ "chatbot", "chatbot_rest" ]

Q13:如何使用alpine映像檔執行容器,並將xy-products volume以唯讀模式,掛載到容器的/data目錄?

可以使用下列的指令來完成:

 

? $ docker container run -it --rm -v xy-products:/data:ro alpine /bin/sh

 

Q14:請描述修改Docker Daemon配置的方式有幾種?

總共有兩種方法可修改Docker Daemon配置:

1. 使用JSON配置檔

這是建議方式,因為這可所有配置存放在單一目錄位置。


追蹤我們Featrue us

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

我知道了!