五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

淺談docker-compose網(wǎng)絡設置之networks

發(fā)布日期:2022-03-27 14:11 | 文章來源:腳本之家

networks使用方式之官網(wǎng)教程

官網(wǎng)的docker-compose.yml參考文檔:Compose file version 3 reference

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

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

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

1. 未顯式聲明網(wǎng)絡環(huán)境的docker-compose.yml

例如,在目錄app下創(chuàng)建docker-compose.yml,內(nèi)容如下:

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網(wǎng)絡中。使用docker network ls可以查看網(wǎng)絡列表,docker network inspect <container id>可以查看對應網(wǎng)絡的配置。

$ docker net work ls
NETWORK ID     NAME           DRIVER       SCOPE
6f5d9bc0b0a0    app_default       bridge       local
0fb4027b4f6d    bridge          bridge       local
567f333b9de8    docker-compose_default  bridge       local
bb346324162a    host           host        local
a4de711f6915    mysql_app        bridge       local
f6c79184ed27    mysql_default      bridge       local
6358d9d60e8a    none           null        local
12345678910

2. networks關(guān)鍵字指定自定義網(wǎng)絡

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

version: '3'
services:
 proxy:
  build: ./proxy
  networks:
   - front
 app:
  build: ./app
  networks:
   - front
   - back
 db:
  image: postgres
  networks:
   - back
networks:
 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兩個網(wǎng)絡,似乎它們的名字就定義成了back和font,但是你使用docker network ls命令并不能找到它們。假如你是在myApp目錄下運行的docker-compose up命令,那么這兩個網(wǎng)絡應該分別對應myApp_backmyApp_front。

3. 配置默認網(wǎng)絡

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

4. 使用已存在的網(wǎng)絡

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:
   - app
networks:
  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:
   - app
networks:
 app:
  external: true123456789101112131415161718192021222324252627282930313233343536373839

我決定使用預先創(chuàng)建的網(wǎng)絡,然后把他們加入這個已經(jīng)創(chuàng)建好的網(wǎng)絡,從而實現(xiàn)通信。為此,我運行了如下命令:

$ docker network create app1

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

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

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

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

networks:
  mysql_app:
   driver: bridge123

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

其他的一些用法

使用aliases代替link

一般的使用格式如下:

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

在下面的例子中,我的web容器可以直接通過database:3306或者db:3306訪問db容器了。它們同時屬于一個網(wǎng)絡,并且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:
     - mysql
networks:
 new:
 legacy:123456789101112131415161718192021222324252627

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持本站。

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關(guān)注
微信

關(guān)注官方微信
頂部