Docker系列教程16-network命令

本文提供可用于與Docker網(wǎng)絡(luò)及與網(wǎng)絡(luò)中容器進行交互的network子命令的示例。這些命令可通過Docker Engine CLI獲得刚操。 這些命令是:

  • docker network create
  • docker network connect
  • docker network ls
  • docker network rm
  • docker network disconnect
  • docker network inspect

雖然不是必需的闸翅,但在嘗試本節(jié)中的示例之前,先閱讀 了解Docker網(wǎng)絡(luò) 更佳菊霜。 示例使用默認bridge 網(wǎng)絡(luò)以便您可以立即嘗試坚冀。要實驗overlay網(wǎng)絡(luò),請參閱 多主機網(wǎng)絡(luò)入門指南 鉴逞。

創(chuàng)建網(wǎng)絡(luò)

Docker Engine在安裝時自動創(chuàng)建bridge 網(wǎng)絡(luò)记某。 該網(wǎng)絡(luò)對應(yīng)于Engine傳統(tǒng)依賴的docker0 網(wǎng)橋。除該網(wǎng)絡(luò)外构捡,也可創(chuàng)建自己的bridgeoverlay 網(wǎng)絡(luò)液南。

bridge 網(wǎng)絡(luò)駐留在運行Docker Engine實例的單個主機上。 overlay 網(wǎng)絡(luò)可跨越運行Docker Engine的多個主機勾徽。 如果您運行docker network create 并僅提供網(wǎng)絡(luò)名稱滑凉,它將為您創(chuàng)建一個橋接網(wǎng)絡(luò)。

$ docker network create simple-network

69568e6336d8c96bbf57869030919f7c69524f71183b44d80948bd3927c87f6a

$ docker network inspect simple-network
[
    {
        "Name": "simple-network",
        "Id": "69568e6336d8c96bbf57869030919f7c69524f71183b44d80948bd3927c87f6a",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "172.22.0.0/16",
                    "Gateway": "172.22.0.1"
                }
            ]
        },
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

bridge 網(wǎng)絡(luò)不同喘帚, overlay 網(wǎng)絡(luò)需要一些預(yù)制條件才能創(chuàng)建——

  • 訪問key-value存儲畅姊。 引擎支持Consul,Etcd和ZooKeeper(分布式存儲)key-value存儲吹由。
  • 與key-value存儲連接的主機集群若未。
  • 在swarm中的每個主機上正確配置的Docker daemon

支持overlay 網(wǎng)絡(luò)的dockerd 選項有:

  • --cluster-store
  • --cluster-store-opt
  • --cluster-advertise

在創(chuàng)建網(wǎng)絡(luò)時倾鲫,Docker引擎默認會為網(wǎng)絡(luò)創(chuàng)建一個不重疊的子網(wǎng)粗合。 您可以覆蓋此默認值,并使用--subnet 選項直接指定子網(wǎng)级乍。 對于bridge 網(wǎng)絡(luò)舌劳,只可指定一個子網(wǎng)。 overlay 網(wǎng)絡(luò)支持多個子網(wǎng)玫荣。

注意 :強烈建議在創(chuàng)建網(wǎng)絡(luò)時使用--subnet 選項甚淡。 如果未指定--subnet 則Docker daemon會自動為網(wǎng)絡(luò)選擇并分配子網(wǎng),這可能會導(dǎo)致與您基礎(chǔ)結(jié)構(gòu)中的另一個子網(wǎng)(該子網(wǎng)不受--subnet 管理)重疊捅厂。 當(dāng)容器連接到該網(wǎng)絡(luò)時贯卦,這種重疊可能導(dǎo)致連接問題或故障。

--subnet 選項以外焙贷,您還可以指定--gateway 撵割, --ip-range --gateway --ip-range--aux-address選項。

$ docker network create -d overlay \
  --subnet=192.168.0.0/16 \
  --subnet=192.170.0.0/16 \
  --gateway=192.168.0.100 \
  --gateway=192.170.0.100 \
  --ip-range=192.168.1.0/24 \
  --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \
  --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
  my-multihost-network

確保您的子網(wǎng)不重疊辙芍。 如果重疊啡彬,那么網(wǎng)絡(luò)將會創(chuàng)建失敗羹与,Docker Engine返回錯誤。

創(chuàng)建自定義網(wǎng)絡(luò)時庶灿,您可以向驅(qū)動傳遞其他選項纵搁。 bridge 驅(qū)動程序接受以下選項:

Option Equivalent Description
com.docker.network.bridge.name - 創(chuàng)建Linux網(wǎng)橋時要使用的網(wǎng)橋名稱
com.docker.network.bridge.enable_ip_masquerade --ip-masq 啟用IP偽裝
com.docker.network.bridge.enable_icc --icc 啟用或禁用跨容器連接
com.docker.network.bridge.host_binding_ipv4 --ip 綁定容器端口時的默認IP
com.docker.network.driver.mtu --mtu 設(shè)置容器網(wǎng)絡(luò)MTU

overlay 驅(qū)動也支持com.docker.network.driver.mtu 選項。

以下參數(shù)可以傳遞給任何網(wǎng)絡(luò)驅(qū)動的docker network create 往踢。

Argument Equivalent Description
--internal - 限制對網(wǎng)絡(luò)的外部訪問
--ipv6 --ipv6 啟用IPv6網(wǎng)絡(luò)

以下示例使用-o 選項腾誉,在綁定端口時綁定到指定的IP地址,然后使用docker network inspect 來檢查網(wǎng)絡(luò)峻呕,最后將新容器attach到新網(wǎng)絡(luò)利职。

$ docker network create -o "com.docker.network.bridge.host_binding_ipv4"="172.23.0.1" my-network

b1a086897963e6a2e7fc6868962e55e746bee8ad0c97b54a5831054b5f62672a

$ docker network inspect my-network

[
    {
        "Name": "my-network",
        "Id": "b1a086897963e6a2e7fc6868962e55e746bee8ad0c97b54a5831054b5f62672a",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.23.0.0/16",
                    "Gateway": "172.23.0.1"
                }
            ]
        },
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.host_binding_ipv4": "172.23.0.1"
        },
        "Labels": {}
    }
]

$ docker run -d -P --name redis --network my-network redis

bafb0c808c53104b2c90346f284bda33a69beadcab4fc83ab8f2c5a4410cd129

$ docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                        NAMES
bafb0c808c53        redis               "/entrypoint.sh redis"   4 seconds ago       Up 3 seconds        172.23.0.1:32770->6379/tcp   redis

連接容器

您可以將一個現(xiàn)有容器連接到一個或多個網(wǎng)絡(luò)。 容器可連接到使用不同網(wǎng)絡(luò)驅(qū)動的網(wǎng)絡(luò)瘦癌。 一旦連接猪贪,容器即可使用另一個容器的IP地址或名稱進行通信。

對于支持多主機連接的overlay 網(wǎng)絡(luò)或自定義插件佩憾,不同主機上的容器哮伟,只要連接到同一multi-host network多主機網(wǎng)絡(luò),也可以這種方式進行通信妄帘。

此示例使用六個容器楞黄,并指示您根據(jù)需要創(chuàng)建它們。

基本容器網(wǎng)絡(luò)示例

  1. 首先抡驼,創(chuàng)建并運行兩個容器鬼廓, container1container2

    $ docker run -itd --name=container1 busybox
    
    18c062ef45ac0c026ee48a83afa39d25635ee5f02b58de4abc8f467bcaa28731
    
    $ docker run -itd --name=container2 busybox
    
    498eaaaf328e1018042c04b2de04036fc04719a6e39a097a4f4866043a2c2152
    
  2. 創(chuàng)建一個隔離的bridge 網(wǎng)絡(luò)進行測試。

    $ docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw
    
    06a62f1c73c4e3107c0f555b7a5f163309827bfbbf999840166065a8f35455a8
    
  3. container2 連接到網(wǎng)絡(luò)致盟,然后inspect網(wǎng)絡(luò)以驗證連接:

    $ docker network connect isolated_nw container2
    
    $ docker network inspect isolated_nw
    
    [
        {
            "Name": "isolated_nw",
            "Id": "06a62f1c73c4e3107c0f555b7a5f163309827bfbbf999840166065a8f35455a8",
            "Scope": "local",
            "Driver": "bridge",
            "IPAM": {
                "Driver": "default",
                "Config": [
                    {
                        "Subnet": "172.25.0.0/16",
                        "Gateway": "172.25.0.1/16"
                    }
                ]
            },
            "Containers": {
                "90e1f3ec71caf82ae776a827e0712a68a110a3f175954e5bd4222fd142ac9428": {
                    "Name": "container2",
                    "EndpointID": "11cedac1810e864d6b1589d92da12af66203879ab89f4ccd8c8fdaa9b1c48b1d",
                    "MacAddress": "02:42:ac:19:00:02",
                    "IPv4Address": "172.25.0.2/16",
                    "IPv6Address": ""
                }
            },
            "Options": {}
        }
    ]
    

    請注意碎税, container2 自動分配了一個IP地址。 因為在創(chuàng)建網(wǎng)絡(luò)時指定了--subnet 選項馏锡,所以IP地址會從該子網(wǎng)選擇雷蹂。

    作為提醒container1 僅連接到默認bridge 杯道。

  4. 啟動第三個容器匪煌,但這次使用--ip 標(biāo)志分配一個IP地址,并使用 docker run命令的--network選項將其連接到--isolated_nw網(wǎng)絡(luò):

    $ docker run --network=isolated_nw --ip=172.25.3.3 -itd --name=container3 busybox
    
    467a7863c3f0277ef8e661b38427737f28099b61fa55622d6c30fb288d88c551
    

    只要您為容器指定的IP地址是如上子網(wǎng)的一部分党巾,那就可使用--ip--ip6 標(biāo)志將IPv4或IPv6地址分配給容器萎庭,將其連接到以上網(wǎng)絡(luò)。 當(dāng)您在使用用戶自定義的網(wǎng)絡(luò)時以這種方式指定IP地址時齿拂,配置將作為容器配置的一部分進行保留驳规,并在容器重新加載時進行應(yīng)用。 使用非用戶自定義網(wǎng)絡(luò)時署海,分配的IP地址將被保留吗购,因為不保證Docker daemon重啟時容器的子網(wǎng)不會改變医男,除非您使用用戶定義的網(wǎng)絡(luò)」【這一段官方文檔是不是有問題昨登?趾代?贯底?】

  5. 檢查container3 所使用的網(wǎng)絡(luò)資源。 簡潔起見撒强,截斷以下輸出禽捆。

    $ docker inspect --format=''  container3
    
    {"isolated_nw":
      {"IPAMConfig":
        {
          "IPv4Address":"172.25.3.3"},
          "NetworkID":"1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
          "EndpointID":"dffc7ec2915af58cc827d995e6ebdc897342be0420123277103c40ae35579103",
          "Gateway":"172.25.0.1",
          "IPAddress":"172.25.3.3",
          "IPPrefixLen":16,
          "IPv6Gateway":"",
          "GlobalIPv6Address":"",
          "GlobalIPv6PrefixLen":0,
          "MacAddress":"02:42:ac:19:03:03"}
        }
      }
    }
    

    因為在啟動時將container3 連接到isolated_nw ,所以它根本沒有連接到默認的bridge 網(wǎng)絡(luò)飘哨。

  6. 檢查container2 所使用的網(wǎng)絡(luò)胚想。 如果你安裝了Python,你可以打印輸出格式化芽隆。

    $ docker inspect --format=''  container2 | python -m json.tool
    
    {
        "bridge": {
            "NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
            "EndpointID": "0099f9efb5a3727f6a554f176b1e96fca34cae773da68b3b6a26d046c12cb365",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAMConfig": null,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03"
        },
        "isolated_nw": {
            "NetworkID":"1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
            "EndpointID": "11cedac1810e864d6b1589d92da12af66203879ab89f4ccd8c8fdaa9b1c48b1d",
            "Gateway": "172.25.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAMConfig": null,
            "IPAddress": "172.25.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:19:00:02"
        }
    }
    

    請注意浊服, container2 屬于兩個網(wǎng)絡(luò)。 當(dāng)您啟動它時胚吁,它加入了默認bridge 網(wǎng)絡(luò)牙躺,并在步驟3中將其連接到isolated_nw

    image

    eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:03

    eth1 Link encap:Ethernet HWaddr 02:42:AC:15:00:02

  7. 使用docker attach 命令連接到正在運行的container2 并檢查它的網(wǎng)絡(luò)堆棧:

    $ docker attach container2
    

    使用ifconfig 命令檢查容器的網(wǎng)絡(luò)堆棧腕扶。 您應(yīng)該看到兩個以太網(wǎng)卡孽拷,一個用于默認bridge ,另一個用于isolated_nw 網(wǎng)絡(luò)半抱。

    $ sudo ifconfig -a
    
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03
              inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
              inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
              RX packets:8 errors:0 dropped:0 overruns:0 frame:0
              TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:648 (648.0 B)  TX bytes:648 (648.0 B)
    
    eth1      Link encap:Ethernet  HWaddr 02:42:AC:15:00:02
              inet addr:172.25.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
              inet6 addr: fe80::42:acff:fe19:2/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:8 errors:0 dropped:0 overruns:0 frame:0
              TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:648 (648.0 B)  TX bytes:648 (648.0 B)
    
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
  8. Docker內(nèi)嵌DNS服務(wù)器可使用容器名稱解析連接到給定網(wǎng)絡(luò)的容器脓恕。 這意味著網(wǎng)絡(luò)內(nèi)的容器可以通過容器名稱ping在同一網(wǎng)絡(luò)中的另一個容器。 例如窿侈,從container2 可以按名稱ping container3 炼幔。

    / # ping -w 4 container3
    PING container3 (172.25.3.3): 56 data bytes
    64 bytes from 172.25.3.3: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.25.3.3: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.25.3.3: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.25.3.3: seq=3 ttl=64 time=0.097 ms
    
    --- container3 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.070/0.081/0.097 ms
    

    此功能不適用于默認bridge 網(wǎng)絡(luò)。 container1container2都連接到默認的bridge 網(wǎng)絡(luò)史简,但是并不能使用容器名稱從container2 ping container1 乃秀。

    / # ping -w 4 container1
    ping: bad address 'container1'
    

    但依然可直接ping IP地址:

    / # ping -w 4 172.17.0.2
    PING 172.17.0.2 (172.17.0.2): 56 data bytes
    64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.095 ms
    64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.075 ms
    64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.072 ms
    64 bytes from 172.17.0.2: seq=3 ttl=64 time=0.101 ms
    
    --- 172.17.0.2 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.072/0.085/0.101 ms
    

    離開container2 容器,并使用CTRL-p CTRL-q 保持容器運行乘瓤。

  9. 當(dāng)前环形, container2 連接到默認bridge網(wǎng)絡(luò)和isolated_nw 網(wǎng)絡(luò),因此衙傀,container2 可與container1 以及container3進行通信抬吟。 但是,container3container1 沒有任何共同的網(wǎng)絡(luò)统抬,所以它們不能通信火本。 要驗證這一點危队,請附加到container3并嘗試通過IP地址ping container1

    $ docker attach container3
    
    $ ping 172.17.0.2
    PING 172.17.0.2 (172.17.0.2): 56 data bytes
    ^C
    
    --- 172.17.0.2 ping statistics ---
    10 packets transmitted, 0 packets received, 100% packet loss
    

    離開container3 容器钙畔,并使用CTRL-p CTRL-q保持容器運行茫陆。

即使容器未運行,也可以將容器連接到網(wǎng)絡(luò)擎析。 但是簿盅, docker network inspect 僅顯示運行容器的信息。

鏈接容器而不使用用戶定義的網(wǎng)絡(luò)

完成基本容器網(wǎng)絡(luò)示例中的步驟后揍魂, container2 可以自動解析container3 的名稱桨醋,因為兩個容器都連接到isolated_nw 網(wǎng)絡(luò)。 但是现斋,連接到默認bridge 的容器無法解析彼此的容器名稱喜最。 如果您需要容器能夠通過bridge 網(wǎng)絡(luò)進行通信,則需要使用遺留的連接功能庄蹋。 這是唯一的建議使用--link 的情況瞬内。 您應(yīng)該強烈地考慮使用用戶定義的網(wǎng)絡(luò)。

使用遺留的link 標(biāo)志為可為默認的bridge 網(wǎng)絡(luò)添加以下功能進行通信:

  • 將容器名稱解析為IP地址的能力
  • 使用--link=CONTAINER-NAME:ALIAS 定義一個網(wǎng)絡(luò)別名去連接容器的能力
  • 安全的容器連接(通過--icc=false 隔離)
  • 環(huán)境變量注入

需要重申的是限书,當(dāng)您使用用戶自定義網(wǎng)絡(luò)時虫蝶,默認情況下提供所有這些功能,無需額外的配置蔗包。 此外秉扑,您可以動態(tài)attach到多個網(wǎng)絡(luò),也可動態(tài)從多個網(wǎng)絡(luò)中離開调限。

  • 使用DNS進行自動名稱解析
  • 支持--link 選項為鏈接的容器提供名稱別名
  • 網(wǎng)絡(luò)中容器的自動安全隔離環(huán)境
  • 環(huán)境變量注入

以下示例簡要介紹如何使用--link 舟陆。

  1. 繼續(xù)上面的例子,創(chuàng)建一個新的容器container4 耻矮,并將其連接到網(wǎng)絡(luò)isolated_nw 秦躯。 另外,使用--link標(biāo)志鏈接到容器container5 (不存在q勺啊)踱承!

    $ docker run --network=isolated_nw -itd --name=container4 --link container5:c5 busybox
    
    01b5df970834b77a9eadbaff39051f237957bd35c4c56f11193e0594cfd5117c
    

    這有點棘手,因為container5 還不存在哨免。 當(dāng)container5被創(chuàng)建時茎活, container4將能夠?qū)⒚Qc5 解析為container5 的IP地址。

    注意 :使用遺留的link功能創(chuàng)建的容器之間的任何鏈接本質(zhì)上都是靜態(tài)的琢唾,并且通過別名強制綁定容器载荔。 它無法容忍鏈接的容器重新啟動。 用戶自定義網(wǎng)絡(luò)中的新鏈接功能支持容器之間的動態(tài)鏈接采桃,并且允許鏈接容器中的重新啟動和IP地址更改懒熙。

    由于您尚未創(chuàng)建容器container5 嘗試ping它將導(dǎo)致錯誤丘损。 attach到container4并嘗試ping任何container5c5

    $ docker attach container4
    
    $ ping container5
    
    ping: bad address 'container5'
    
    $ ping c5
    
    ping: bad address 'c5'
    

    container4 離開,并使用CTRL-p CTRL-q 使其保持運行工扎。

  2. 創(chuàng)建一個容器徘钥,名為container5 ,并使用別名c4將其鏈接到container4 肢娘。

    $ docker run --network=isolated_nw -itd --name=container5 --link container4:c4 busybox
    
    72eccf2208336f31e9e33ba327734125af00d1e1d2657878e2ee8154fbb23c7a
    

    現(xiàn)在attach到container4 呈础,嘗試ping c5container5

    $ docker attach container4
    
    / # ping -w 4 c5
    PING c5 (172.25.0.5): 56 data bytes
    64 bytes from 172.25.0.5: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.25.0.5: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.5: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.5: seq=3 ttl=64 time=0.097 ms
    
    --- c5 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.070/0.081/0.097 ms
    
    / # ping -w 4 container5
    PING container5 (172.25.0.5): 56 data bytes
    64 bytes from 172.25.0.5: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.25.0.5: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.5: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.5: seq=3 ttl=64 time=0.097 ms
    
    --- container5 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.070/0.081/0.097 ms
    

    container4 分離蔬浙,并使用CTRL-p CTRL-q 使其保持運行猪落。

  3. 最后,附加到container5 畴博,驗證你可以ping container4

    $ docker attach container5
    
    / # ping -w 4 c4
    PING c4 (172.25.0.4): 56 data bytes
    64 bytes from 172.25.0.4: seq=0 ttl=64 time=0.065 ms
    64 bytes from 172.25.0.4: seq=1 ttl=64 time=0.070 ms
    64 bytes from 172.25.0.4: seq=2 ttl=64 time=0.067 ms
    64 bytes from 172.25.0.4: seq=3 ttl=64 time=0.082 ms
    
    --- c4 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.065/0.070/0.082 ms
    
    / # ping -w 4 container4
    PING container4 (172.25.0.4): 56 data bytes
    64 bytes from 172.25.0.4: seq=0 ttl=64 time=0.065 ms
    64 bytes from 172.25.0.4: seq=1 ttl=64 time=0.070 ms
    64 bytes from 172.25.0.4: seq=2 ttl=64 time=0.067 ms
    64 bytes from 172.25.0.4: seq=3 ttl=64 time=0.082 ms
    
    --- container4 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.065/0.070/0.082 ms
    

    container5 離開蓝仲,并使用CTRL-p CTRL-q 使其保持運行俱病。

網(wǎng)絡(luò)范圍的別名示例

鏈接容器時,無論是使用遺留的link方法還是使用用戶自定義網(wǎng)絡(luò)袱结,您指定的任何別名只對指定的容器有意義亮隙,并且不能在默認bridge 上的其他容器上運行。

另外垢夹,如果容器屬于多個網(wǎng)絡(luò)溢吻,則給定的鏈接別名與給定的網(wǎng)絡(luò)范圍一致。 因此果元,容器可以鏈接到不同網(wǎng)絡(luò)中的不同別名促王,并且別名將不適用于不在同一網(wǎng)絡(luò)上的容器。

以下示例說明了這些要點而晒。

  1. 創(chuàng)建另一個名為local_alias 網(wǎng)絡(luò):

    $ docker network create -d bridge --subnet 172.26.0.0/24 local_alias
    76b7dc932e037589e6553f59f76008e5b76fa069638cd39776b890607f567aaa
    
  2. 接下來蝇狼,使用別名foobarcontainer4container5 連接到新的網(wǎng)絡(luò)local_alias

    $ docker network connect --link container5:foo local_alias container4
    $ docker network connect --link container4:bar local_alias container5
    
  3. attach到container4 并嘗試使用別名foo ping container4 (是的,同一個)倡怎,然后嘗試使用別名c5 ping容器container5

     $ docker attach container4
    
     / # ping -w 4 foo
     PING foo (172.26.0.3): 56 data bytes
     64 bytes from 172.26.0.3: seq=0 ttl=64 time=0.070 ms
     64 bytes from 172.26.0.3: seq=1 ttl=64 time=0.080 ms
     64 bytes from 172.26.0.3: seq=2 ttl=64 time=0.080 ms
     64 bytes from 172.26.0.3: seq=3 ttl=64 time=0.097 ms
    
     --- foo ping statistics ---
     4 packets transmitted, 4 packets received, 0% packet loss
     round-trip min/avg/max = 0.070/0.081/0.097 ms
    
     / # ping -w 4 c5
     PING c5 (172.25.0.5): 56 data bytes
     64 bytes from 172.25.0.5: seq=0 ttl=64 time=0.070 ms
     64 bytes from 172.25.0.5: seq=1 ttl=64 time=0.080 ms
     64 bytes from 172.25.0.5: seq=2 ttl=64 time=0.080 ms
     64 bytes from 172.25.0.5: seq=3 ttl=64 time=0.097 ms
    
     --- c5 ping statistics ---
     4 packets transmitted, 4 packets received, 0% packet loss
     round-trip min/avg/max = 0.070/0.081/0.097 ms
    

    兩個ping都成功了迅耘,但子網(wǎng)不同,這意味著網(wǎng)絡(luò)不同监署。

    離開container4颤专,并使用CTRL-p CTRL-q 使其保持運行。

  4. isolated_nw 網(wǎng)絡(luò)斷開container5 钠乏。 附加到container4 并嘗試ping c5foo 栖秕。

    $ docker network disconnect isolated_nw container5
    
    $ docker attach container4
    
    / # ping -w 4 c5
    ping: bad address 'c5'
    
    / # ping -w 4 foo
    PING foo (172.26.0.3): 56 data bytes
    64 bytes from 172.26.0.3: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.26.0.3: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.26.0.3: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.26.0.3: seq=3 ttl=64 time=0.097 ms
    
    --- foo ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.070/0.081/0.097 ms
    

    您不能再從container5 收到isolated_nw 網(wǎng)絡(luò)上的container5 。 但是缓熟,您仍然可以使用別名foo到達container4 (從container4 )累魔。

    離開container4摔笤,并使用CTRL-p CTRL-q 使其保持運行。

docker network 限制

雖然docker network 是控制您的容器使用的網(wǎng)絡(luò)的推薦方法垦写,但它確實有一些限制吕世。

環(huán)境變量注入

環(huán)境變量注入是靜態(tài)的,環(huán)境變量在容器啟動后無法更改梯投。 遺留的--link 標(biāo)志將所有環(huán)境變量共享到鏈接的容器命辖,但docker network 命令沒有等效選項。 當(dāng)您使用docker network 將容器連接到網(wǎng)絡(luò)時分蓖,不能在容器之間動態(tài)共享環(huán)境變量尔艇。

使用網(wǎng)絡(luò)范圍的別名

遺留的link提供傳出名稱解析,隔離在配置別名的容器內(nèi)么鹤。 網(wǎng)絡(luò)范圍的別名不允許這種單向隔離终娃,而是為網(wǎng)絡(luò)的所有成員提供別名。

以下示例說明了此限制蒸甜。

  1. 在網(wǎng)絡(luò)isolated_nw 創(chuàng)建另一個容器container6 棠耕,并給它網(wǎng)絡(luò)別名app

    $ docker run --network=isolated_nw -itd --name=container6 --network-alias app busybox
    
    8ebe6767c1e0361f27433090060b33200aac054a68476c3be87ef4005eb1df17
    
  2. attach到container4 柠新。 嘗試通過名稱( container6 )和網(wǎng)絡(luò)別名( app )ping容器窍荧。 請注意氏淑,IP地址是一樣的鬼贱。

    $ docker attach container4
    
    / # ping -w 4 app
    PING app (172.25.0.6): 56 data bytes
    64 bytes from 172.25.0.6: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.25.0.6: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.6: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.6: seq=3 ttl=64 time=0.097 ms
    
    --- app ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.070/0.081/0.097 ms
    
    / # ping -w 4 container6
    PING container5 (172.25.0.6): 56 data bytes
    64 bytes from 172.25.0.6: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.25.0.6: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.6: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.6: seq=3 ttl=64 time=0.097 ms
    
    --- container6 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.070/0.081/0.097 ms
    

    container4 離開乏苦,并使用CTRL-p CTRL-q 使其保持運行侍郭。

  3. container6 連接到local_alias 網(wǎng)絡(luò)莹汤,并為其賦予網(wǎng)絡(luò)范圍的別名scoped-app 帝牡。

    $ docker network connect --alias scoped-app local_alias container6
    

    現(xiàn)在container6 在網(wǎng)絡(luò)isolated_nw 中的別名為app 婴洼,在網(wǎng)絡(luò)local_alias 中別名為scoped-app 距误。

  4. 嘗試從container4 (連接到這兩個網(wǎng)絡(luò))和container5 (僅連接到isolated_nw )連接到這些別名喇嘱。

    $ docker attach container4
    
    / # ping -w 4 scoped-app
    PING foo (172.26.0.5): 56 data bytes
    64 bytes from 172.26.0.5: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.26.0.5: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.26.0.5: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.26.0.5: seq=3 ttl=64 time=0.097 ms
    
    --- foo ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.070/0.081/0.097 ms
    

    離開container4 茉贡,并使用CTRL-p CTRL-q 使其保持運行。

    $ docker attach container5
    
    / # ping -w 4 scoped-app
    ping: bad address 'scoped-app'
    

    離開container5者铜,并使用CTRL-p CTRL-q 使其保持運行腔丧。

    這表明將別名僅在定義它的網(wǎng)絡(luò)上生效,只有連接到該網(wǎng)絡(luò)的容器才能訪問該別名作烟。

將多個容器解析為一個別名

多個容器可在同一網(wǎng)絡(luò)內(nèi)共享相同的網(wǎng)絡(luò)范圍別名愉粤。 這提供了一種DNS輪詢(round-robbin)高可用性。 當(dāng)使用諸如Nginx這樣的軟件時拿撩,這可能不可靠衣厘,Nginx通過IP地址來緩存客戶端。

以下示例說明了如何設(shè)置和使用網(wǎng)絡(luò)別名。

注意 :使用網(wǎng)絡(luò)別名進行DNS輪詢高可用的用戶應(yīng)考慮使用swarm服務(wù)影暴。 Swarm服務(wù)提供了開箱即用的错邦、類似的負載均衡功能。 如果連接到任何節(jié)點型宙,即使是不參與服務(wù)的節(jié)點撬呢。 Docker將請求發(fā)送到正在參與服務(wù)的隨機節(jié)點,并管理所有的通信妆兑。

  1. isolated_nw 中啟動container7 魂拦,別名與container6相同,即app 搁嗓。

    $ docker run --network=isolated_nw -itd --name=container7 --network-alias app busybox
    
    3138c678c123b8799f4c7cc6a0cecc595acbdfa8bf81f621834103cd4f504554
    

    當(dāng)多個容器共享相同的別名時芯勘,其中一個容器將解析為別名。 如果該容器不可用腺逛,則另一個具有別名的容器將被解析荷愕。 這提供了群集中的高可用性。

    注意在IP地址解析時屉来,所選擇的容器是不完全可預(yù)測的路翻。 因此,在下面的練習(xí)中茄靠,您可能會在一些步驟中獲得不同的結(jié)果。 如果步驟假定返回的結(jié)果是container6 但是您收到container7 蝶桶,這就是為什么慨绳。

  2. container4 開始連續(xù)ping到app 別名。

    $ docker attach container4
    
    $ ping app
    PING app (172.25.0.6): 56 data bytes
    64 bytes from 172.25.0.6: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.25.0.6: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.6: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.6: seq=3 ttl=64 time=0.097 ms
    ...
    

    返回的IP地址屬于container6 真竖。

  3. 在另一個終端脐雪,停止container6

     $ docker stop container6 
    

    在連接到container4 的終端 恢共,觀察ping輸出战秋。 當(dāng)container6關(guān)閉時,它將暫停讨韭,因為ping 命令在首次調(diào)用時查找IP脂信,并且發(fā)現(xiàn)該IP不再可用。 但是透硝, ping命令在默認情況下具有非常長的超時時間狰闪,因此不會發(fā)生錯誤。

  4. 使用CTRL+C退出ping命令并再次運行濒生。

    $ ping app
    
    PING app (172.25.0.7): 56 data bytes
    64 bytes from 172.25.0.7: seq=0 ttl=64 time=0.095 ms
    64 bytes from 172.25.0.7: seq=1 ttl=64 time=0.075 ms
    64 bytes from 172.25.0.7: seq=2 ttl=64 time=0.072 ms
    64 bytes from 172.25.0.7: seq=3 ttl=64 time=0.101 ms
    ...
    

    app別名現(xiàn)在解析為container7 的IP地址埋泵。

  5. 最后一次測試,重新啟動container6

    $ docker start container6
    

    在連接到container4 的終端丽声,再次運行ping 命令礁蔗。 現(xiàn)在可能會再次解決container6 。 如果您幾次啟動和停止ping 雁社,您將看到每個容器的響應(yīng)浴井。

    $ docker attach container4
    
    $ ping app
    PING app (172.25.0.6): 56 data bytes
    64 bytes from 172.25.0.6: seq=0 ttl=64 time=0.070 ms
    64 bytes from 172.25.0.6: seq=1 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.6: seq=2 ttl=64 time=0.080 ms
    64 bytes from 172.25.0.6: seq=3 ttl=64 time=0.097 ms
    ...
    

    CTRL+C 停止ping。 從container4 離開歧胁,并使用CTRL-p CTRL-q 使其保持運行滋饲。

斷開容器

您可以隨時使用docker network disconnect 命令斷開容器與網(wǎng)絡(luò)的連接。

  1. isolated_nw 網(wǎng)絡(luò)斷開container2 喊巍,然后檢查container2isolated_nw 網(wǎng)絡(luò)屠缭。

    $ docker network disconnect isolated_nw container2
    
    $ docker inspect --format=''  container2 | python -m json.tool
    
    {
        "bridge": {
            "NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
            "EndpointID": "9e4575f7f61c0f9d69317b7a4b92eefc133347836dd83ef65deffa16b9985dc0",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03"
        }
    }
    $ docker network inspect isolated_nw
    
    [
        {
            "Name": "isolated_nw",
            "Id": "06a62f1c73c4e3107c0f555b7a5f163309827bfbbf999840166065a8f35455a8",
            "Scope": "local",
            "Driver": "bridge",
            "IPAM": {
                "Driver": "default",
                "Config": [
                    {
                        "Subnet": "172.21.0.0/16",
                        "Gateway": "172.21.0.1/16"
                    }
                ]
            },
            "Containers": {
                "467a7863c3f0277ef8e661b38427737f28099b61fa55622d6c30fb288d88c551": {
                    "Name": "container3",
                    "EndpointID": "dffc7ec2915af58cc827d995e6ebdc897342be0420123277103c40ae35579103",
                    "MacAddress": "02:42:ac:19:03:03",
                    "IPv4Address": "172.25.3.3/16",
                    "IPv6Address": ""
                }
            },
            "Options": {}
        }
    ]
    
  2. 當(dāng)容器與網(wǎng)絡(luò)斷開連接時,它不能再與連接到該網(wǎng)絡(luò)的其他容器進行通信崭参,除非它與其他容器具有g(shù)共用他網(wǎng)絡(luò)呵曹。 驗證container2 不能再到達isolated_nw 上的container3

    $ docker attach container2
    
    / # ifconfig
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03  
              inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
              inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
              RX packets:8 errors:0 dropped:0 overruns:0 frame:0
              TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:648 (648.0 B)  TX bytes:648 (648.0 B)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    / # ping container3
    PING container3 (172.25.3.3): 56 data bytes
    ^C
    --- container3 ping statistics ---
    2 packets transmitted, 0 packets received, 100% packet loss
    
  3. 驗證container2 是否仍具有與默認bridge完全連接何暮。

    / # ping container1
    PING container1 (172.17.0.2): 56 data bytes
    64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.119 ms
    64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.174 ms
    ^C
    --- container1 ping statistics ---
    2 packets transmitted, 2 packets received, 0% packet loss
    round-trip min/avg/max = 0.119/0.146/0.174 ms
    / #
    
  4. 移除container4 奄喂, container5container6container7 海洼。

    $ docker stop container4 container5 container6 container7
    
    $ docker rm container4 container5 container6 container7
    

處理過時的網(wǎng)絡(luò)端點

在某些情況下跨新,例如在多主機網(wǎng)絡(luò)中以非優(yōu)雅的方式重新啟動Docker daemon,Docker daemon將無法清除過時的連接端點坏逢。 如果新的容器連接到具有與過期端點相同的名稱的網(wǎng)絡(luò)域帐,則此類過時的端點可能會導(dǎo)致錯誤:

ERROR: Cannot start container bc0b19c089978f7845633027aa3435624ca3d12dd4f4f764b61eac4c0610f32e: container already connected to network multihost

要清理這些過時的端點,可移除容器并強制將其與網(wǎng)絡(luò)斷開( docker network disconnect -f )是整。 這樣肖揣,您就可將容器成功連接到網(wǎng)絡(luò)。

$ docker run -d --name redis_db --network multihost redis

ERROR: Cannot start container bc0b19c089978f7845633027aa3435624ca3d12dd4f4f764b61eac4c0610f32e: container already connected to network multihost

$ docker rm -f redis_db

$ docker network disconnect -f multihost redis_db

$ docker run -d --name redis_db --network multihost redis

7d986da974aeea5e9f7aca7e510bdb216d58682faa83a9040c2f2adc0544795a

刪除網(wǎng)絡(luò)

當(dāng)網(wǎng)絡(luò)中的所有容器都已停止或斷開連接時浮入,您可以刪除網(wǎng)絡(luò)龙优。 如果網(wǎng)絡(luò)連接了端點,則會發(fā)生錯誤事秀。

  1. 斷開container3isolated_nw 連接彤断。

    $ docker network disconnect isolated_nw container3
    
  1. 檢查isolated_nw 以驗證沒有其他端點連接到它。

    $ docker network inspect isolated_nw
    
    [
        {
            "Name": "isolated_nw",
            "Id": "06a62f1c73c4e3107c0f555b7a5f163309827bfbbf999840166065a8f35455a8",
            "Scope": "local",
            "Driver": "bridge",
            "IPAM": {
                "Driver": "default",
                "Config": [
                    {
                        "Subnet": "172.21.0.0/16",
                        "Gateway": "172.21.0.1/16"
                    }
                ]
            },
            "Containers": {},
            "Options": {}
        }
    ]
    
  2. 刪除isolated_nw 網(wǎng)絡(luò)秽晚。

    $ docker network rm isolated_nw
    
  3. 列出所有網(wǎng)絡(luò)以驗證isolated_nw不再存在:

    $ docker network ls
    
    NETWORK ID          NAME                DRIVER              SCOPE
    4bb8c9bf4292        bridge              bridge              local
    43575911a2bd        host                host                local
    76b7dc932e03        local_alias         bridge              local
    b1a086897963        my-network          bridge              local
    3eb020e70bfd        none                null                local
    69568e6336d8        simple-network      bridge              local
    

相關(guān)信息

本文首發(fā)

https://docs.docker.com/engine/userguide/networking/work-with-networks/

干貨分享

全是干貨
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓦糟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赴蝇,更是在濱河造成了極大的恐慌菩浙,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異劲蜻,居然都是意外死亡陆淀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門先嬉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轧苫,“玉大人,你說我怎么就攤上這事疫蔓『茫” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵衅胀,是天一觀的道長岔乔。 經(jīng)常有香客問我,道長滚躯,這世上最難降的妖魔是什么雏门? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮掸掏,結(jié)果婚禮上茁影,老公的妹妹穿的比我還像新娘。我一直安慰自己丧凤,他們只是感情好募闲,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著愿待,像睡著了一般蝇更。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呼盆,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音蚁廓,去河邊找鬼访圃。 笑死,一個胖子當(dāng)著我的面吹牛相嵌,可吹牛的內(nèi)容都是我干的腿时。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼饭宾,長吁一口氣:“原來是場噩夢啊……” “哼批糟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起看铆,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤徽鼎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體否淤,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡悄但,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了石抡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檐嚣。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖啰扛,靈堂內(nèi)的尸體忽然破棺而出嚎京,到底是詐尸還是另有隱情,我是刑警寧澤隐解,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布鞍帝,位于F島的核電站,受9級特大地震影響厢漩,放射性物質(zhì)發(fā)生泄漏膜眠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一溜嗜、第九天 我趴在偏房一處隱蔽的房頂上張望宵膨。 院中可真熱鬧,春花似錦炸宵、人聲如沸辟躏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捎琐。三九已至,卻和暖如春裹匙,著一層夾襖步出監(jiān)牢的瞬間瑞凑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工概页, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留籽御,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓惰匙,卻偏偏與公主長得像技掏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子项鬼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • flannel是CoreOS提供用于解決Dokcer集群跨主機通訊的覆蓋網(wǎng)絡(luò)工具哑梳。它的主要思路是:預(yù)先留出一個網(wǎng)段...
    Zero___閱讀 5,052評論 0 4
  • Docker基礎(chǔ) 這篇基礎(chǔ)文章是方便用戶在使用cSphere平臺之前,了解docker基礎(chǔ)知識。針對已經(jīng)有一定的L...
    威谷子閱讀 992評論 0 11
  • 0.遠程桌面連接mstsc1.打開服務(wù)列表 services.msc2.刪除服務(wù) sc...
    請叫我四爺閱讀 807評論 0 1
  • 風(fēng)不停地吹绘盟,雨傘總躍躍欲試的想沖向上空鸠真,好似風(fēng)再加十倍馬力悯仙,我就可以乘著它去遨游天際。 (圖片來源于網(wǎng)絡(luò))
    珍珍小姐閱讀 183評論 0 0
  • 寶貝,從前些天公司領(lǐng)導(dǎo)陳總找媽媽談話了撤嫩,說公司沒錢了偎捎,頂多撐到本月底。公司不想給大家畫餅序攘,趙總在找資金茴她,但是錢沒到...
    吳艾佳閱讀 220評論 0 0