本系列文章根據Ajeet Singh Raina所寫的「Top 100 Docker Interview Questions」文章,翻譯轉載成一百個問題與答案,其中將Docker相關面試問題分成初級、中級和進階級。若你正在準備Docker相關工作的職缺面試,或渴望獲得Docker相關工具及知識,這些內容可能就是你最需要知道的。
想將正在執行中的容器連接到現有的使用者定義的橋接網路,請使用docker network connect指令,下列指令將已經在運行的my-nginx容器連接到已存在的my-net網路:
? $ docker network connect my-net my-nginx
Q23:Docker是否支援IPv6?
是的,Docker支援IPv6,只有在Linux平台上運行的Docker版本支援IPv6網路,自從Docker Engine 1.5發布以來,皆支援IPv6位址,要在Docker Daemon程序中啟用IPv6功能,需要編輯「/etc/docker/daemon.json」並設置ipv6值為true:
? { "ipv6": true }
然後重新載入Docker配置檔,重啟Docker:
? $ systemctl reload docker
現在就可以使用--ip6參數來新增網路,並使用--ip6參數來配置容器IPv6位址。
Q24:如何部署Docker映像檔到Azure容器實例?
使用az工具(Azure CLI),亦可使用microsoft/azure-cli映像檔(https://hub.docker.com/r/microsoft/azure-cli/),輸入az container create指令來部署容器:
? $ az container create --resource- group --name --image --cpu 1 --memory 1 --registry- login-server --registry-username --registry-password --dns-name-label --ports 80
然後,驗證容器實例新建的狀態:
? $ az container show --resource- group --name --query instanceView.state
當容器處於Running狀態時,在瀏覽器中輸入容器實例對應的完整網址名稱(Fully Qualified Domain Name,FQDN),以便檢查應用系統是否已經成功部署,透過Azure Portal到資源群組頁面中的Azure容器實例概述,或用下列指令,就可找到FQDN:
? $ az container show –resource- group –name –query ipAddress.fqdn
Q25:層疊網路(Overlay)與橋接網路(Bridge)有何不同?
橋接網路連接兩個網路,讓來自多個通訊網路或網段組成單一合併網路,因此稱為橋接。層疊網路通常用在兩台分隔的主機之間建立虛擬網路,那為何稱為虛擬?因為其網路利用現有網路上所疊架而成的。
橋接網路適用於單一主機中,而層疊網路則是應用於多台主機上(圖10)。
|
▲圖10 多台主機以層疊網路連接。 |
Q26:將Docker主機加入到現有的Swarm叢集時,有哪些網路會被影響到?
當Swarm叢集初始化或將Docker主機加入現有Swarm時,在那台Docker主機上建立兩個新的網路:
‧第一個是命名為ingress的層疊網路,用在處理和叢集服務相關的控制和資料流量,當建立Swarm叢集服務時,若不將其連接到使用者定義的層疊網路時,則預設情況會連接到ingress網路。
‧第一個是命名為docker_gwbridge的橋接網路,它會將個別的Docker Daemon連接到已加入Swarm的其他Docker Daemons。
Q27:如何禁用容器上的網路堆疊?
如果要完全禁用容器中的網路堆疊,可以在啟動容器時使用「--network none」參數,在容器內,就會只新增loopback裝置,圖11為其示意圖。
|
▲圖11 無網路容器之拓樸圖。 |
Q28:如何替Docker容器建立MacVLAN網路?
要建立Macvlan網路並配合實體網路介面的橋接器,可以使用--driver macvlan和docker network create指令,還需要指定實際運作介面,就是在Docker主機上網路流量會實際通過的網路介面:
? $ docker network create -d macvlan --subnet = 172.16.86.0/24 --gateway = 172.16.86.1 -o parent = eth0 collabnet
Q29:是否可以排除在MacVLAN網路中已使用的IP位址?
如果需要排除在Macvlan網路中所使用的IP位址,例如當IP位址已經被使用時,請使用--aux-addresses: