最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年09月27日 09:41:54   作者:Kiloveyousmile  
這篇文章主要介紹了淺談docker-compose網(wǎng)絡(luò)設(shè)置之networks,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

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

較為準(zhǔn)確的中文翻譯版:Compose file version 3 reference

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

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

1. 未顯式聲明網(wǎng)絡(luò)環(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啟動(dòng)容器后,這些容器都會(huì)被加入app_default網(wǎng)絡(luò)中。使用docker network ls可以查看網(wǎng)絡(luò)列表,docker network inspect <container id>可以查看對(duì)應(yīng)網(wǎng)絡(luò)的配置。

$ 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)絡(luò)

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

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兩個(gè)網(wǎng)絡(luò),似乎它們的名字就定義成了back和font,但是你使用docker network ls命令并不能找到它們。假如你是在myApp目錄下運(yùn)行的docker-compose up命令,那么這兩個(gè)網(wǎng)絡(luò)應(yīng)該分別對(duì)應(yīng)myApp_backmyApp_front。

3. 配置默認(rèn)網(wǎng)絡(luò)

version: '2'

services:
 web:
  build: .
  ports:
   - "8000:8000"
 db:
  image: postgres

networks:
 default:
  # Use a custom driver
  driver: custom-driver-11234567891011121314

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

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

遇到的問(wèn)題

學(xué)習(xí)了上面的東西,筆者準(zhǔn)備將自己的項(xiàng)目付諸實(shí)踐。我的項(xiàng)目包含了兩個(gè)docker-compose.yml,且使用了links選項(xiàng),所以必須使用networks配置。

其中,一個(gè)docker-compose.yml用于啟動(dòng)mysql服務(wù),位于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

另一個(gè)docker-compose.yml用于啟動(dòng)服務(wù)程序,位于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

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

$ docker network create app1

之后,開(kāi)始運(yùn)行編寫(xiě)好的docker-compose.yml文件。首先運(yùn)行啟動(dòng)mysql的配置文件,結(jié)果如下:

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

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

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

networks:
  mysql_app:
   driver: bridge123

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

其他的一些用法

使用aliases代替link

一般的使用格式如下:

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

在下面的例子中,我的web容器可以直接通過(guò)database:3306或者db:3306訪問(wèn)db容器了。它們同時(shí)屬于一個(gè)網(wǎng)絡(luò),并且db設(shè)置了主機(jī)別名,所以這樣的訪問(wèn)方式是完全可以的。

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Docker Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟

    使用Docker Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟

    這篇文章主要介紹了使用Docker Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • docker通過(guò)Dockerfile修改鏡像中tomcat的端口

    docker通過(guò)Dockerfile修改鏡像中tomcat的端口

    8080端口會(huì)經(jīng)常出現(xiàn)被占用的情況,本文主要介紹了docker通過(guò)Dockerfile修改鏡像中tomcat的端口,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 詳解centos7 docker1.12安裝私有倉(cāng)庫(kù)

    詳解centos7 docker1.12安裝私有倉(cāng)庫(kù)

    本篇文章主要介紹了centos7 docker1.12安裝私有倉(cāng)庫(kù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 使用minikube安裝k8s單節(jié)點(diǎn)集群方式

    使用minikube安裝k8s單節(jié)點(diǎn)集群方式

    本文主要介紹了minikube的使用方法,包括安裝、啟動(dòng)、鏡像管理等步驟,minikube是一個(gè)專(zhuān)注于讓Kubernetes更易于學(xué)習(xí)和開(kāi)發(fā)的本地Kubernetes環(huán)境,支持在macOS、Linux和Windows上快速設(shè)置本地Kubernetes集群
    2024-10-10
  • Docker部署前后端分離項(xiàng)目的三種方式小結(jié)

    Docker部署前后端分離項(xiàng)目的三種方式小結(jié)

    本文主要介紹了Docker部署前后端分離項(xiàng)目的三種方式小結(jié),包含通過(guò)兩個(gè)容器部署,通過(guò)compose編排容器自動(dòng)部署和將前后端項(xiàng)目打成一個(gè)鏡像部署的三種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • idea整合docker快速部署springboot應(yīng)用的詳細(xì)過(guò)程

    idea整合docker快速部署springboot應(yīng)用的詳細(xì)過(guò)程

    這篇文章主要介紹了idea整合docker快速部署springboot應(yīng)用,文中給大家提到關(guān)于安裝docker步驟,idea連接遠(yuǎn)程docker的方法,需要的朋友可以參考下
    2021-10-10
  • Docker 拉取鏡像及標(biāo)簽操作 pull | tag

    Docker 拉取鏡像及標(biāo)簽操作 pull | tag

    這篇文章主要介紹了Docker 拉取鏡像及標(biāo)簽操作 pull | tag,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • docker守護(hù)進(jìn)程的配置和操作的方法

    docker守護(hù)進(jìn)程的配置和操作的方法

    這篇文章主要介紹了docker守護(hù)進(jìn)程的配置和操作的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Docker下安裝zookeeper(單機(jī)和集群)

    Docker下安裝zookeeper(單機(jī)和集群)

    這篇文章主要介紹了Docker下安裝zookeeper(單機(jī)和集群),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Docker可視化管理工具DockerUI的使用

    Docker可視化管理工具DockerUI的使用

    這篇文章主要介紹了Docker可視化管理工具DockerUI的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論

龙海市| 梅河口市| 仪征市| 建始县| 阳山县| 泰宁县| 乌拉特前旗| 堆龙德庆县| 增城市| 济源市| 涟水县| 礼泉县| 监利县| 河东区| 望奎县| 中山市| 图木舒克市| 庆城县| 道孚县| SHOW| 华容县| 江都市| 天峨县| 威信县| 乌拉特后旗| 宝坻区| 张北县| 察隅县| 东莞市| 五常市| 托里县| 交口县| 郎溪县| 柳河县| 长顺县| 商洛市| 扎囊县| 牟定县| 浦江县| 山丹县| 堆龙德庆县|