將此篇文章跟 Facebook 上的朋友分享將此篇文章跟 Plurk 上的朋友分享將此篇文章跟 Twitter 上的朋友分享列印轉寄
2019/2/11

容器技術條理說分明 由淺入深QA快問快答

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

鄭淳尹
本系列文章根據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配置檔

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

這篇文章讓你覺得滿意不滿意
送出
相關文章
善用QRadar App架構 開發客製化安全監控程式
秒速容器服務 挺應用轉型
Hyper-V隔離容器 支援.NET程式獨立運行
網路層貫通地端與雲端 實現容器隨需遷移
整併CoreOS底層技術 增強Day 2維運能力
留言
顯示暱稱:
留言內容:
送出