簡體   English   中英

單個容器上有多個docker網絡

[英]Multiple docker networks on a single container

我有一個名為traefik的覆蓋網絡的traefik堆棧配置。 它包含我的traefik反向代理容器,然后包含服務各個子域的幾個容器。 我要添加一個新文件,它需要訪問在另一個容器中創建的數據庫服務器,因此我添加了以下內容:

networks:
  traefik:
    driver: overlay
  database:
    driver: overlay

services:
  traefik:
    image: traefik
    networks:
      - traefik
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    volumes:
      # ...

  # ...

  database:
    image: postgres:9.6-alpine # match what's being used by heroku
    networks:
      - database

  staging:
    image: staging
    networks:
      - traefik
      - database
deploy:
  labels:
    traefik.enable: "true"
    traefik.frontend.rule: Host:lotto-ticket.example.com
    traefik.docker.network: traefik
    traefik.port: 3000

當我這樣做時,反向代理開始返回網關超時代碼,這表明staging容器對於traefik網絡不再可用。 如果我從staging容器中刪除database網絡,則該子域將按預期運行(盡管它顯然無法訪問數據庫),並且當我重新添加它時,反向代理會開始從中獲取超時。

兩個網絡之間是否存在某種沖突? 我是否需要配置IP路由才能在單個容器上使用多個docker網絡?

編輯:添加更多細節到配置摘錄

您需要使用標簽traefik.docker.network告訴traefik在哪個網絡上連接到您的服務。 在您的情況下,該標簽將設置為${stack_name}_traefik ,其中${stack_name}是堆棧的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM