2016-12-30 55 views
0

這個問題可能是給所有的碼頭工人大師。但是讓我先介紹一些背景知識。我面對的DNS解析問題(在碼頭工人的默認網絡「橋樑」),直到我在https://docs.docker.com/engine/userguide/networking/碼頭工人的默認DNS嵌入式橋接網絡

閱讀文檔中的以下泊塢窗網絡檢查上面的命令顯示所有給定網絡上所連接的容器和他們的網絡資源。此默認網絡中的容器能夠使用IP地址相互通信。 Docker不支持默認網橋上的自動服務發現。如果要在此默認橋接網絡中與容器名稱進行通信,則必須通過傳統泊塢窗運行 - 鏈接選項連接容器。

作爲--link選項已過時,使任何docker run命令掛起和最後搗毀搬運工守護進程(局部地)我試圖使用不同的橋接用戶網絡和釘扎虛設實例給它。

docker network create -d bridge --subnet=172.15.0.0/16 
    --gateway=172.15.0.1 
    -o com.docker.network.bridge.default_bridge=false 
    -o com.docker.network.bridge.enable_icc=true 
    -o com.docker.network.bridge.enable_ip_masquerade=true 
    -o com.docker.network.driver.mtu=1500 
    -o com.docker.network.bridge.name=docker1 
    -o com.docker.network.bridge.host_binding_ipv4=0.0.0.0 a 

docker run --name db1 -e MYSQL_ROOT_PASSWORD=a -d mysql:5.7.16 
docker run --name db2 -e MYSQL_ROOT_PASSWORD=a -d mysql:5.7.16 
docker network connect --ip 172.15.0.40 a db1 
docker network connect --ip 172.15.0.40 a db2 

現在通過--name命名服務/容器的分辨率工作正常使用ping但這裏的問題是:

爲什麼服務/容器名稱解析不可能的默認橋接網絡上?

將是巨大的,如果任何搬運工網絡大師會給出提示。問候。

回答

2

爲什麼服務/容器名稱解析不可能的默認橋接網絡上?

沒有技術上的原因,這是不可能的,但決定保持向後兼容性。

默認(「網橋」)網絡從不支持通過內置DNS進行服務發現,並且當功能處於開發階段時,某些項目的維護人員擔心他們不希望將其添加到默認網絡中,因爲它會阻止替代實現。

此外,自定義網絡設計到明確允許容器之間的通信。在默認網絡上,通過禁用「集裝箱間通信」(--icc=false),並使用--link建立集裝箱之間的鏈接來實現此目的。對連接到默認網絡的任何容器進行自動發現會使其使用起來更爲複雜。

所以;創建一個自定義網絡,並將容器附加到該網絡,如果它們應該能夠相互通信的話。

注意,在很多情況下,並不是所有的指定需要的選項;只需運行docker network create foo即可適用於大多數使用情況。

+0

感謝clearification –

+0

讓我們假設我想啓用,我可以對默認的用戶網絡上相同的功能,我應該怎麼辦?我應該在守護進程中啓用哪些標誌來解鎖? 我在問這個問題,因爲用'--icc = true'或'--icc = false'都不會改變一件事情。並且與守護進程中的那個標誌結合使用,使用相對的docker run --network-alias = ...'標誌,仍然帶來一個錯誤,說它只能用於用戶網絡。 任何明確的文檔,我可以閱讀如何使用此功能呢?先謝謝你! –

+0

@JulianXhokaxhiu默認橋樑網絡是不可能的。是否有一個特定的原因,你不想使用自定義網絡?它很容易使用一個(我可以更新,並添加一個基本的例子,如果你想) – thaJeztah

相關問題