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

docker-compose網(wǎng)絡(luò)設(shè)置之networks的使用

 更新時間:2024年10月13日 11:14:10   作者:Kiloveyousmile  
本文詳細(xì)解釋了在使用 Docker Compose時如何配置網(wǎng)絡(luò),包括創(chuàng)建、使用和問題解決等方面,介紹了如何通過docker-compose.yml文件快速編排和部署應(yīng)用服務(wù),同時解決網(wǎng)絡(luò)隔離問題,感興趣的可以了解一下

官網(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ò)中運行,從而解決網(wǎng)絡(luò)隔離問題。這種應(yīng)用在swarm部署中,非常常見。不過,本文并不做討論。

一般對于集群服務(wù),常常通過docker-compose.yml文檔快速編排、部署應(yīng)用服務(wù)。官網(wǎ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: db

使用docker-compose up啟動容器后,這些容器都會被加入app_default網(wǎng)絡(luò)中。使用docker network ls可以查看網(wǎng)絡(luò)列表,docker network inspect <container id>可以查看對應(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

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

例如下面的docker-compose.yml文件,定義了front和back網(wǎng)絡(luò),實現(xiàn)了網(wǎng)絡(luò)隔離。其中proxy和db之間只能通過app來實現(xiàn)通信。其中,custom-driver-1并不能直接使用,你應(yīng)該替換為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"

值得注意的是,這里定義了backfront兩個網(wǎng)絡(luò),似乎它們的名字就定義成了backfont,但是你使用docker network ls命令并不能找到它們。假如你是在myApp目錄下運行的docker-compose up命令,那么這兩個網(wǎng)絡(luò)應(yīng)該分別對應(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-1

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

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

遇到的問題

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

其中,一個docker-compose.yml用于啟動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: app

另一個docker-compose.yml用于啟動服務(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: true

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

$ docker network create app

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

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

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

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

networks:
   mysql_app:
     driver: bridge

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

其他的一些用法

使用aliases代替link

一般的使用格式如下:

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

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

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:

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

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

到此這篇關(guān)于docker-compose網(wǎng)絡(luò)設(shè)置之networks的使用的文章就介紹到這了,更多相關(guān)docker compose networks內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker容器修改端口和目錄映射的方法步驟

    docker容器修改端口和目錄映射的方法步驟

    在使用Docker時,容器的端口映射是一個核心概念,它允許容器與宿主機以及外部網(wǎng)絡(luò)進行通信,這篇文章主要介紹了docker容器修改端口和目錄映射的方法步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • 使用dockercompose搭建springboot-mysql-nginx應(yīng)用

    使用dockercompose搭建springboot-mysql-nginx應(yīng)用

    這篇文章主要介紹了使用dockercompose搭建springboot-mysql-nginx應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析

    Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析

    在本篇文章里小編給大家整理的是關(guān)于Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析,有需要的朋友們可以參考下。
    2020-02-02
  • Docker啟動mysql服務(wù)的實現(xiàn)步驟

    Docker啟動mysql服務(wù)的實現(xiàn)步驟

    本文主要介紹了Docker啟動mysql服務(wù)的實現(xiàn)步驟,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Docker Desktop啟動后容器自啟動關(guān)閉指南

    Docker Desktop啟動后容器自啟動關(guān)閉指南

    在使用 Docker Desktop 的時候,有些容器會在每次啟動 Docker Desktop 后自動啟動,但是這個服務(wù)我并不是每次都需要用,所以希望它不要跟隨 Docker Desktop 自動啟動,而是在需要的時候手動啟動,所以本文給大家介紹了Docker Desktop啟動后容器自啟動關(guān)閉方法
    2026-06-06
  • docker快速搭建私有鏡像倉庫registry以及registryUI方式

    docker快速搭建私有鏡像倉庫registry以及registryUI方式

    本文詳細(xì)介紹了如何在Windows系統(tǒng)上使用Docker搭建私有鏡像倉庫,并通過registry-web界面進行管理,內(nèi)容包括環(huán)境準(zhǔn)備、搭建步驟及上傳和下載鏡像的操作
    2024-12-12
  • 將Docker的根目錄遷移到其他掛載盤的詳細(xì)流程

    將Docker的根目錄遷移到其他掛載盤的詳細(xì)流程

    Docker默認(rèn)將所有容器、鏡像、數(shù)據(jù)卷等內(nèi)容存放在 /var/lib/docker 下,隨著業(yè)務(wù)增長,該目錄很容易撐爆根分區(qū),所以本文將教你如何將 Docker 的根目錄遷移到其他掛載盤并保持原有容器、鏡像、數(shù)據(jù)卷不丟失,需要的朋友可以參考下
    2025-08-08
  • 通過容器技術(shù)(docker)部署MySQL讀寫分離

    通過容器技術(shù)(docker)部署MySQL讀寫分離

    Mycat作為開源數(shù)據(jù)庫中間件,在MySQL讀寫分離架構(gòu)中發(fā)揮核心作用,通過智能代理層實現(xiàn)讀寫請求的自動路由、負(fù)載均衡與故障轉(zhuǎn)移,從而提高系統(tǒng)性能和可用性
    2026-01-01
  • Docker?link實現(xiàn)容器互聯(lián)的方式

    Docker?link實現(xiàn)容器互聯(lián)的方式

    通過link方式創(chuàng)建容器,然后我們可以使用被link容器的別名進行訪問。本文重點給大家介紹Docker?link實現(xiàn)容器互聯(lián)的方式,感興趣的朋友一起看看吧
    2021-12-12
  • Docker搭建Elasticsearch集群和Kibana全過程

    Docker搭建Elasticsearch集群和Kibana全過程

    這篇文章主要介紹了Docker搭建Elasticsearch集群和Kibana全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論

共和县| 鄂托克旗| 铅山县| 廉江市| 乐昌市| 衡阳县| 会宁县| 家居| 古浪县| 荣昌县| 米脂县| 阿克苏市| 柳林县| 平顺县| 辉南县| 天津市| 海淀区| 三门县| 卓尼县| 夏津县| 德江县| 鸡东县| 永清县| 平罗县| 麻栗坡县| 灌阳县| 思南县| 阿尔山市| 定安县| 育儿| 永新县| 阿拉善左旗| 丰都县| 保靖县| 玛多县| 平山县| 休宁县| 罗定市| 奎屯市| 厦门市| 中方县|