容器 Docker 備份 還原 資料共享 監控

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

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

2019-03-11
本系列文章根據Ajeet Singh Raina所寫的「Top 100 Docker Interview Questions」文章,翻譯轉載成一百個問題與答案,並Docker相關面試問題分成初級、中級和進階級。本文為初級的第二部分,很適合正在準備Docker相關工作的職缺面試或是想要吸收Docker相關知識的IT從業人員。

1. 使用剛才建立的備份,可以將其還原到相同容器或在其他位置所建立的其他容器,舉例來說,先建立一個命名為「dbstore2」的新容器:

 

  $ docker create -v newdbdata:/ var/lib/mysql --name dbstore2 mysql

 

2. 然後,執行另一個新容器去掛載db2store2的Volume,並解壓縮那個備份檔案:

 

 

  $ docker run -ti --rm --volumes- from dbstore2 -v $(pwd):/backup  ubuntu:16.04 bash

 

3. 緊接著,在容器中執行tar命令:

 

 

  tar xvf /backup/backup.tar

 

4. 完成後登出,再啟動db2store2容器,便完成資料還原:

 

 

  $ docker start db2store2

 

上述步驟2與3亦可合併成「docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu:16.04 tar xvf /backup/backup.tar」。

 

Q37:如何實作並且管理ACS Docker Swarm叢集?

首先,建立一個Container Service,然後在Master配置步驟中選擇Orchestrator as Swarm,如圖2所示。

圖2  Azure Container Service操作畫面。

接著,在主要配置頁面中,指定VM大小和Master節點所需的節點數。

實際操作CLI指令,來建立ACS Docker Swarm,可以使用下列命令:

 

  $ az acs create --name --orchestrator- type dockerce --resource-group --generate-ssh- keys

 

請注意,由於Kubernetes已成為主要容器管理的平台,Azure之後將不再支援ACS,改以AKS為主要產品,相關指令如下:

 

 

  $ az aks create --name --resource-group --generate -ssh-keys

 

Q38:如何設定Docker預設的日誌紀錄驅動程式?

 

若要修改Docker daemon預設日誌紀錄驅動程式配置成為特定輸出格式,請將位於「/etc/docker」(Linux主機)、「C:\ProgramData\docker\config\」(Windows Server主機),其daemon.json檔案中的log-driver參數設置為特定驅動程式名稱,預設的日誌紀錄驅動程式是json-file。

Q39:為什麼我的服務需要10秒鐘才能重新建立或停止?

因為Docker Compose透過發送SIGTERM來試圖停止容器,接著它預設等待時間為10秒,超過10秒後,將發送SIGKILL訊號到容器,以強制方式刪除它。

如果每次都要等待這10秒逾時情況,那表示你的容器在收到SIGTERM訊號後並沒正常停止,可以使用「docker logs 」來深入了解情況。若確定須超過10秒鐘,可加上-t參數延長等待時間。

Q40:如何在同一台主機上多次執行同一個Compose定義檔?

Compose預設使用當下目錄名稱作為專案名稱,而專案名稱是建立此專案所有容器和相關資源的唯一識別碼。

若要執行多次相同專案,請使用命令列參數-p,自訂專案名稱,如「docker-compose -p up」,或是利用COMPOSE_PROJECT_NAME環境變數來設置自訂專案名稱。

Q41:Docker Compose中的up、run和start之間的差別是什麼?

一般來說,只需要docker-compose up,用**up**來啟動或重新啟動docker-compose.yml中定義的所有服務,在預設的「attached」模式下,可以在stdout看到所有容器中的全部日誌紀錄,在「detached」模式(-d)中,Compose在啟動容器後就會跳出回到Shell指令,但容器仍會繼續在後台運行。

docker-compose run指令用於執行「一次性」或立即的「adhoc」任務,它需要指定欲運行的服務名稱,並且只會啟動指定服務的容器和相依所需要服務之容器,使用run是為了執行測試或實行管理任務,例如刪除或為資料Volume容器匯入資料,故run指令的作用類似「docker run -ti」,因為它可開啟一個到容器的交互式終端畫面,並且當容器中的程序退出後,便回到進入容器前的Shell畫面及狀態。

「docker-compose start」指令僅用於重新啟動先前建立過但目前已停止的容器,完全不會建立任何新的容器。

Q42:什麼是Docker Trusted Registry?

Docker Trusted Registry(DTR)是Docker映像檔儲存之企業級解決方案,可以安裝於防火牆之後,以便安全地存放和管理應用系統中所使用的Docker映像檔。

Q43:如何在Docker Compose中宣告預設環境變數?

Compose支援以.env為檔名的文件內設定預設環境變數方式,其檔案須放置在執行docker-compose指令的目錄中(與docker-compose.yml檔案同一目錄),如圖3所示。

圖3  .env環境變數檔。



追蹤我們Featrue us

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

我知道了!