亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

淺談docker-compose網絡設置之networks

2024-09-01 13:55:42
字體:
來源:轉載
供稿:網友

networks使用方式之官網教程

官網的docker-compose.yml參考文檔:Compose file version 3 reference

較為準確的中文翻譯版:Compose file version 3 reference 

networks通常應用于集群服務,從而使得不同的應用程序得以在相同的網絡中運行,從而解決網絡隔離問題。這種應用在swarm部署中,非常常見。不過,本文并不做討論。 

一般對于集群服務,常常通過docker-compose.yml文檔快速編排、部署應用服務。官網中給出了如下的使用場景和方式:

1. 未顯式聲明網絡環境的docker-compose.yml

例如,在目錄app下創建docker-compose.yml,內容如下:

version: '3'services: web:  mage: nginx:latest  container_name: web  depends_on:   - db  ports:   - "9090:80"  links:   - db db:  image: mysql  container_name: db1234567891011121314

使用docker-compose up啟動容器后,這些容器都會被加入app_default網絡中。使用docker network ls可以查看網絡列表,docker network inspect <container id>可以查看對應網絡的配置。

$ docker net work lsNETWORK ID     NAME           DRIVER       SCOPE6f5d9bc0b0a0    app_default       bridge       local0fb4027b4f6d    bridge          bridge       local567f333b9de8    docker-compose_default  bridge       localbb346324162a    host           host        locala4de711f6915    mysql_app        bridge       localf6c79184ed27    mysql_default      bridge       local6358d9d60e8a    none           null        local12345678910

2. networks關鍵字指定自定義網絡

例如下面的docker-compose.yml文件,定義了front和back網絡,實現了網絡隔離。其中proxy和db之間只能通過app來實現通信。其中,custom-driver-1并不能直接使用,你應該替換為host, bridge, overlay等選項中的一種。

version: '3'services: proxy:  build: ./proxy  networks:   - front app:  build: ./app  networks:   - front   - back db:  image: postgres  networks:   - backnetworks: front:  # Use a custom driver  driver: custom-driver-1 back:  # Use a custom driver which takes special options  driver: custom-driver-2  driver_opts:   foo: "1"   bar: "2"123456789101112131415161718192021222324252627

值得注意的是,這里定義了back和front兩個網絡,似乎它們的名字就定義成了back和font,但是你使用docker network ls命令并不能找到它們。假如你是在myApp目錄下運行的docker-compose up命令,那么這兩個網絡應該分別對應myApp_backmyApp_front。

3. 配置默認網絡

version: '2'services: web:  build: .  ports:   - "8000:8000" db:  image: postgresnetworks: default:  # Use a custom driver  driver: custom-driver-11234567891011121314

4. 使用已存在的網絡

networks: default:  external:   name: my-pre-existing-network1234

遇到的問題

學習了上面的東西,筆者準備將自己的項目付諸實踐。我的項目包含了兩個docker-compose.yml,且使用了links選項,所以必須使用networks配置。 

其中,一個docker-compose.yml用于啟動mysql服務,位于mysql/目錄下:

 version: "3"services: dbmaster:  image: master/mysql:latest  container_name: dbmaster  ports:   - "3308:3306"  volumes:   - $HOME/Work/data/dbmaster:/var/lib/mysql  environment:   MYSQL_ROOT_PASSWORD: master  logging:   driver: "json-file"   options:    max-size: "1000k"    max-file: "20"  networks:   - app dbslave:  image: slave/mysql:latest  container_name: dbslave  ports:   - "3309:3306"  depends_on:   - dbmaster  volumes:   - $HOME/Work/data/dbslave:/var/lib/mysql  environment:   MYSQL_ROOT_PASSWORD: slave  logging:   driver: "json-file"   options:    max-size: "1000k"    max-file: "20"  links:   - dbmaster  networks:   - appnetworks:  default:  external:   name: app12345678910111213141516171819202122232425262728293031323334353637383940414243

另一個docker-compose.yml用于啟動服務程序,位于cloudgo/目錄下:

version: "3"services: web:  image: nginx:latest  container_name: web  depends_on:   - cloudgo  ports:   - "9090:80"  volumes:   - $HOME/Work/docker/docker-compose/nginx/conf.d:/etc/nginx/conf.d  links:   - cloudgot  logging:   driver: "json-file"   options:    max-size: "1000k"    max-file: "20"  networks:   - app cloudgo:  image: cloudgo:latest  container_name: cloudgo  ports:   - "8080:8080"  logging:   driver: "json-file"   options:    max-size: "1000k"    max-file: "20"   external_links:   - dbmaster   - dbslave  networks:   - appnetworks: app:  external: true123456789101112131415161718192021222324252627282930313233343536373839

我決定使用預先創建的網絡,然后把他們加入這個已經創建好的網絡,從而實現通信。為此,我運行了如下命令:

$ docker network create app1

之后,開始運行編寫好的docker-compose.yml文件。首先運行啟動mysql的配置文件,結果如下:

l$ docker-compose upERROR: Service "dbmaster" uses an undefined network "app"12

明明已經創建好了,卻還是報了錯,說該網絡未定義。嘗試改變名稱mysql_app,但是依舊報出同樣的錯誤。最終證明,這種方法無法實現,至今沒有找到官方文檔給出的例子。 

所以,最終決定將第一個docker-compose.yml文件中的networks配置改為如下內容:

networks:  mysql_app:   driver: bridge123

在這個文件中定義一個網絡,以便在后面使用。這里修改完畢,該文件其他地方凡是引用到了該網絡的地方均要作出相同的修改。同樣,第二個文件也一樣。

其他的一些用法

使用aliases代替link

一般的使用格式如下:

services: some-service:  networks:   some-network:    aliases:     - alias1     - alias3   other-network:    aliases:     - alias212345678910

在下面的例子中,我的web容器可以直接通過database:3306或者db:3306訪問db容器了。它們同時屬于一個網絡,并且db設置了主機別名,所以這樣的訪問方式是完全可以的。

version: '2'services: web:  depends_on:   - worker  networks:   - new worker:  depends_on:   - db  networks:   - legacy db:  image: mysql  networks:   new:    aliases:     - database   legacy:    aliases:     - mysqlnetworks: new: legacy:123456789101112131415161718192021222324252627

此時直接使用depends_on已經不再需要link,如果woker需要訪問db,可以直接通過mysql:port的方式。 

使用networks的要點在于: 
1. 注意自定義網絡的方式 
2. 注意docker-compose.yml文件的位置與網絡默認命名的關系 
3. 注意遇到問題嘗試幾種替代方式去解決 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜激情视频| 亚洲图片在线综合| 国产午夜精品视频| 国内偷自视频区视频综合| 精品中文字幕久久久久久| 成人伊人精品色xxxx视频| 日韩在线观看免费网站| 欧美激情在线有限公司| 亚洲激情成人网| 国产精品午夜视频| 清纯唯美日韩制服另类| 久久精品99国产精品酒店日本| 一区二区三区回区在观看免费视频| 国产色婷婷国产综合在线理论片a| 粉嫩av一区二区三区免费野| 午夜剧场成人观在线视频免费观看| 欧美成人午夜激情视频| www亚洲精品| 日日狠狠久久偷偷四色综合免费| 日韩欧美亚洲综合| 九九久久精品一区| 全色精品综合影院| 中文日韩在线观看| 国产成人精品av| 精品日韩中文字幕| 亚洲国产婷婷香蕉久久久久久| 亚洲人成网站色ww在线| 伊人久久久久久久久久久| 欧美多人乱p欧美4p久久| 午夜精品久久久99热福利| 欧美有码在线观看| 欧美日韩另类视频| 日韩激情视频在线播放| 亚洲精品久久7777777| 91久久久久久久一区二区| 亚洲激情久久久| 综合欧美国产视频二区| 久久久久久香蕉网| 国产精品99导航| 日韩av免费看网站| 国产欧美精品va在线观看| 成人福利在线视频| 精品久久久免费| 91国内产香蕉| 久久久精品一区二区| 久久精品男人天堂| 亚洲一区免费网站| 国产偷国产偷亚洲清高网站| 久久久久久久久久久久av| 美女撒尿一区二区三区| 欧美视频裸体精品| 久久91亚洲精品中文字幕奶水| 成人有码视频在线播放| 中文.日本.精品| 欧美高清视频在线播放| 亚洲欧美精品一区二区| 国产伊人精品在线| 另类图片亚洲另类| 国产精品成人在线| 日韩av一区在线| 国内精品免费午夜毛片| 亚洲成人av片在线观看| 中文在线不卡视频| 亚洲精品99久久久久| 欧美激情二区三区| 久久97久久97精品免视看| 精品一区二区三区四区在线| 国模gogo一区二区大胆私拍| 伊人伊成久久人综合网站| 亚洲欧美日韩天堂| 国产精品v片在线观看不卡| 国产一区红桃视频| 91久久精品一区| 亚洲免费视频观看| 国产99久久久欧美黑人| 69久久夜色精品国产7777| 欧美精品videos另类日本| www.欧美三级电影.com| 亚洲国产成人一区| 欧美乱大交xxxxx另类电影| 亚洲女人天堂成人av在线| 欧美精品性视频| 欧美老女人bb| 久久视频在线免费观看| 国产精品久久久久久av福利软件| 91在线观看免费| 色哟哟亚洲精品一区二区| 久久手机免费视频| 国产综合视频在线观看| 2020欧美日韩在线视频| 91精品在线看| 4k岛国日韩精品**专区| 国内免费精品永久在线视频| 色综合老司机第九色激情| 韩国美女主播一区| 欧美亚洲在线播放| 日韩美女福利视频| 欧美伦理91i| 国产成人精品久久二区二区91| 欧美性高跟鞋xxxxhd| 日韩在线视频国产| 亚洲网在线观看| 精品久久香蕉国产线看观看gif| 欧美老女人性生活| 久久精品国产亚洲精品| 在线观看国产精品日韩av| 欧美成人精品激情在线观看| 97热精品视频官网| 欧美成人精品一区二区三区| 亚洲a在线观看| 日本亚洲精品在线观看| 欧美丰满少妇xxxxx| 亚洲日本欧美日韩高观看| 亚洲丁香久久久| 国产日韩精品在线| 欧美日韩国产精品专区| 久久久久久尹人网香蕉| 欧美日韩国产va另类| 欧美成人一区二区三区电影| 亚洲精品久久久久国产| 成人国产亚洲精品a区天堂华泰| 久久精品视频99| 久久久久北条麻妃免费看| 国产精品毛片a∨一区二区三区|国| 麻豆精品精华液| 成人国内精品久久久久一区| 亚洲电影免费观看高清| 欧美性猛交xxxx免费看久久久| 亚洲精品久久久久中文字幕欢迎你| 国产精品久久中文| 91精品国产综合久久男男| 欧美夫妻性视频| 久久久久久久久久久网站| 国产成人精品综合| 欧美专区第一页| 亚洲国语精品自产拍在线观看| 欧美成人在线网站| 国产国语刺激对白av不卡| 国产精品88a∨| 国产精品日韩在线观看| 亚洲男人7777| 久久久精品999| 欧美亚洲一区在线| 国内精品一区二区三区| 91国内精品久久| 欧美激情高清视频| 国产精品综合不卡av| 在线播放亚洲激情| 国产精品久久久久久久久久久久久久| 国产一区二区三区欧美| 精品久久国产精品| 97精品视频在线播放| 精品成人国产在线观看男人呻吟| 国产精品一区二区三区久久| 国产精品久久久一区| 日韩欧美福利视频| 久久男人的天堂| 久久亚洲综合国产精品99麻豆精品福利| 日韩精品视频免费在线观看| 精品国产欧美一区二区五十路| 成人激情视频网| 日本成人精品在线| 91麻豆国产精品| 亚洲一区第一页|