溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Compose變量定制Docker網(wǎng)絡(luò)

發(fā)布時間:2021-08-06 10:20:29 來源:億速云 閱讀:111 作者:chen 欄目:云計算

本篇內(nèi)容介紹了“如何使用Compose變量定制Docker網(wǎng)絡(luò)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!


使用[Docker 多節(jié)點網(wǎng)絡(luò)]來創(chuàng)建虛擬網(wǎng)絡(luò),把容器接入虛擬網(wǎng)絡(luò),能實現(xiàn)應(yīng)用中所需要的網(wǎng)絡(luò)拓撲。具體來說,Bridge網(wǎng)絡(luò)能用來創(chuàng)建單節(jié)點網(wǎng)絡(luò),Overlay網(wǎng)絡(luò)能創(chuàng)建多節(jié)點網(wǎng)絡(luò)。通過這樣給應(yīng)用定制專用網(wǎng)絡(luò),能為容器提供絕對的隔離性。

Docker Compose的目標是實現(xiàn)單節(jié)點網(wǎng)絡(luò),通過用<code>--x-networking</code> 來創(chuàng)建一個應(yīng)用程序獨有的橋接網(wǎng)絡(luò),如果應(yīng)用程序需要多節(jié)點部署,可以使用Docker Swarm集群來創(chuàng)建一個overlay網(wǎng)絡(luò)。

那如果一個橋接網(wǎng)絡(luò)或overlay網(wǎng)絡(luò)已經(jīng)存在,而你想要把這個網(wǎng)絡(luò)分配給運行中的容器呢?

Docker 1.9 引入了變量替換的特性,我們可以利用這特性實現(xiàn)把容器關(guān)聯(lián)到一個預(yù)創(chuàng)建的網(wǎng)絡(luò)上。

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

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


  sh
  docker network create -d bridge mynet
  47d6225ffe56ddd1a8bc0d6abb0ffd8f8ac3eec2090ff243f8cd6f77c170751b=


2. 列出網(wǎng)絡(luò):

  sh
  docker network ls
  NETWORK ID          NAME                DRIVER
  feb6e9567439        bridge              bridge             
  29563a59abe8        none                null               
  25ab737cd665        host                host               
  47d6225ffe56        mynet               bridge


Docker會為每個節(jié)點自動創(chuàng)建三個網(wǎng)絡(luò):
| 網(wǎng)絡(luò)名稱 | 作用  |
| :-------- | :-- |
| bridge |  容器默認連接的網(wǎng)絡(luò),是所有Docker安裝時都默認安裝的docker0網(wǎng)絡(luò)   |
| none     |   容器定制的網(wǎng)絡(luò)棧 |
| host     |   在宿主網(wǎng)絡(luò)棧上添加一個容器,容器中的網(wǎng)絡(luò)配置會與宿主的一樣|

上邊看到,我剛創(chuàng)建的mynet網(wǎng)絡(luò)也在列表中。

    使用<code>docker inspect</code>命令查看mynet網(wǎng)絡(luò)的詳細信息:

    json
    [
        {
            "Name": "mynet",
            "Id": "47d6225ffe56ddd1a8bc0d6abb0ffd8f8ac3eec2090ff243f8cd6f77c170751b",
            "Scope": "local",
            "Driver": "bridge",
            "IPAM": {
                "Driver": "default",
                "Config": [
                    {}
                ]
            },
            "Containers": {},
            "Options": {}
        }
    ]
   

從Containers這節(jié)可以看到,目前還沒有容器關(guān)聯(lián)上去。

Docker Compose 與 網(wǎng)絡(luò)

1. 上面新建的網(wǎng)絡(luò)能在新的容器中使用,只要在運行時使用<code>docker run --net=<NETWORK></code>命令。不過本文會用Compose文件實現(xiàn):

  json
  mycouchbase:
    container_name: "db"
    image: couchbase/server
    ports:
      - 8091:8091
      - 8092:8092
      - 8093:8093
      - 11210:11210
    net: ${NETWORK}
  mywildfly:
    image: arungupta/wildfly-admin
    environment:
      - COUCHBASE_URI=db
    ports:
      - 8080:8080
      - 9990:9990
   net: ${NETWORK}

 注意這里<code>net</code>已經(jīng)指定使用一個自定義網(wǎng)絡(luò)。

2. 使用新創(chuàng)建的網(wǎng)絡(luò)來啟動應(yīng)用:

  sh
  NETWORK=mynet docker-compose up -d


再查看網(wǎng)絡(luò)詳細信息:

  json
 
  docker network inspect mynet
  [
      {
          "Name": "mynet",             
          "Id": "47d6225ffe56ddd1a8bc0d6abb0ffd8f8ac3eec2090ff243f8cd6f77c170751b",           
          "Scope": "local",             
          "Driver": "bridge",            
          "IPAM": {                    
              "Driver": "default",              
              "Config": [            
                  {}              
              ]               
          },        
          "Containers": {         
              "300bebe6c3e0350ebf9b9d3746eb3a7b49444e14c00314770627a9f101442639": {         
                  "EndpointID": "82a3e2d7cd4f1bb03c9ef52bb6abf284942d7e9fcac89fe3700b0e0c4ed2654f",          
                  "MacAddress": "02:42:ac:14:00:03",           
                  "IPv4Address": "172.20.0.3/16",             
                  "IPv6Address": ""           
              },          
              "4fdae4eb919f0934422513227fe541255557dd9e8b3317374685927e7f427249": {           
                  "EndpointID": "937605d716d144b55288d70817d611da5fb0f87e3aedd6b5074fca07f82c3953",          
                  "MacAddress": "02:42:ac:14:00:02",           
                  "IPv4Address": "172.20.0.2/16",             
                  "IPv6Address": ""           
              }         
          },           
          "Options": {}            
      }           
  ]   

可以看到現(xiàn)在已經(jīng)有兩個容器關(guān)聯(lián)到這個網(wǎng)絡(luò)上了。

使用<code>docker ps</code>查看容器ID:

 sh          
 # docker ps                      
 CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                                                                               NAMES
 300bebe6c3e0        couchbase/server          "/entrypoint.sh couch"   2 minutes ago       Up 2 minutes        0.0.0.0:8091-8093->8091-8093/tcp, 11207/tcp, 11211/tcp, 0.0.0.0:11210->11210/tcp, 18091-18092/tcp   db
 4fdae4eb919f        arungupta/wildfly-admin   "/opt/jboss/wildfly/b"   2 minutes ago       Up 2 minutes        0.0.0.0:8080->8080/tcp, 0.0.0.0:9990->9990/tcp                                                      wildflycouchbasejavaee7network_mywildfly_1


查看其中一個容器的網(wǎng)絡(luò)設(shè)置:      
         
 sh      
 docker inspect -f '{{ .HostConfig.NetworkMode }}' 300          
 mynet         

 
查看這個容器的詳細網(wǎng)絡(luò)信息:              

 sh            
 docker inspect -f '{{ .NetworkSettings.Networks.mynet }}' 300                 
 {82a3e2d7cd4f1bb03c9ef52bb6abf284942d7e9fcac89fe3700b0e0c4ed2654f 172.20.0.1 172.20.0.3 16   0          02:42:ac:14:00:03}              


這個容器的更多細節(jié)能用<code>docker inspect</code>看到,相關(guān)的部分在這里:

 json
 "Networks": {
     "mynet": {
         "EndpointID": "82a3e2d7cd4f1bb03c9ef52bb6abf284942d7e9fcac89fe3700b0e0c4ed2654f",
         "Gateway": "172.20.0.1",
         "IPAddress": "172.20.0.3",
         "IPPrefixLen": 16,
         "IPv6Gateway": "",
         "GlobalIPv6Address": "",
         "GlobalIPv6PrefixLen": 0,
         "MacAddress": "02:42:ac:14:00:03"
     }
 }
 

“如何使用Compose變量定制Docker網(wǎng)絡(luò)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI