ฉันกำลังพยายามยึดคอนเทนเนอร์บนโฮมแล็บ
เป้าหมายหลักคือ:
- แยก nginxA และ nginxBจึงไม่สามารถพูดคุยกันผ่านทาง 
172.17.0.1 (เช่น ป้องกัน nginxA จากการเข้าถึง nginxB ทาง 172.17.0.1:5001) 
- แยก nginxA และ nginxB จาก localhost ทำให้สามารถเข้าถึงได้ผ่าน traefik เท่านั้น
 
- อนุญาต nginxA เพื่อพูดคุย nginxA_DBซึ่งอยู่ในสแต็กเดียวกัน แต่ไม่อนุญาตให้คอนเทนเนอร์อื่นหรือ traefik พูดคุยด้วย nginxA_DB
 
แต่ละ docker stack มีบริการ nginx/apache โดยมีพอร์ตที่เปิดเผยใน docker-compose ในลักษณะต่อไปนี้:
นักเทียบท่า-compose-nginxA.yml:
เครือข่าย:
  ภายใน:
    ไอแพม:
      การกำหนดค่า:
        - เครือข่ายย่อย: 10.0.0.0/29
...สนิป...
nginxA:
  เครือข่าย:
    ภายใน:
      ipv4_address: 10.0.0.2
  พอร์ต:
    - "172.17.0.1:5000:80"
นักเทียบท่าเขียน nginxB.yml:
เครือข่าย:
  ภายใน:
    ไอแพม:
      การกำหนดค่า:
        - เครือข่ายย่อย: 10.0.0.8/29
...สนิป...
nginxB:
  เครือข่าย:
    ภายใน:
      ipv4_address: 10.0.0.10
  พอร์ต:
    - "172.17.0.1:5001:80"
ทำให้บริการเหล่านี้เข้าถึงได้ทาง โลคัลโฮสต์ (172.17.0.1) หรือ เทรฟิค,
Traefik อยู่ในเครื่องเดียวกันด้วยการกำหนดค่าต่อไปนี้:
http:
  เราเตอร์:
    nginxA:
     จุดเข้า:
       - เว็บ
     บริการ: nginxA
    nginxB:
     จุดเข้า:
       - เว็บ
     บริการ: nginxB
...สนิป...
  บริการ:
    nginxA:
      โหลดบาลานเซอร์:
        เซิร์ฟเวอร์:
          - url: http://172.17.0.1:5000
    nginxB:
      โหลดบาลานเซอร์:
        เซิร์ฟเวอร์:
          - url: http://172.17.0.1:5001
มีแนวคิดที่จะเชื่อมต่อคอนเทนเนอร์ทั้งหมดเข้าด้วยกัน /24 เครือข่ายด้วย traefik โดยไม่เปิดเผยพอร์ตใด ๆ ผ่านการเขียน แต่เครือข่าย traefik เดียวจะไม่แยกคอนเทนเนอร์ออกจากกัน แต่จะแยกจากภายนอกเท่านั้น
อีกแนวคิดหนึ่งคือการสร้างไฟล์ /31 เครือข่ายสำหรับแต่ละคอนเทนเนอร์และรวม traefik เครือข่ายทั้งหมด แต่ฉันไม่แน่ใจว่าสิ่งนี้จะทำการแยกตามที่ตั้งใจไว้หรือไม่ เช่น.
nginxA:
  เครือข่าย:
    ภายใน:
      ipv4_address: 10.0.0.2 # /29
    nginxA-traefik:
      ipv4_address: 10.50.0.1 # /31
เทรฟิค:
  เครือข่าย:
    nginxA-traefik:
    nginxB-traefik:
  ...
ขอบคุณที่อ่านมาถึงตรงนี้! คุณมีความคิดใด ๆ ว่าสามารถทำได้หรือไม่?