นักเทียบท่าแชร์เครือข่ายกับหน้าต่างและคอนเทนเนอร์ลินุกซ์

Aug 17 2020

ฉันต้องการเชื่อมต่อ windows และ linux container ภายในเครือข่ายเดียวกัน

ก่อนอื่นฉันสร้างเครือข่าย (Docker สำหรับ Windows ตั้งค่าเป็น "Windows Containers"):

docker network create --driver nat mynet

เครือข่ายถูกสร้างขึ้นและdocker network lsแสดงรายการเครือข่ายใหม่

docker-compose.ymlของ windows และบริการ linux ประกอบด้วย:

version: "3"
services:
  ...
    networks:
      mynet: {}
networks:
  mynet:
    external: true

เมื่อdocker-compose upคอนเทนเนอร์ของ windows เริ่มทำงานได้ดีหลังจาก "Switch to Linux Containers" และพยายามเริ่มคอนเทนเนอร์ linux ข้อผิดพลาดต่อไปนี้จะแสดง:

ข้อผิดพลาด: เครือข่าย mynet ถูกประกาศว่าเป็นภายนอก แต่ไม่พบ โปรดสร้างเครือข่ายด้วยตนเองโดยใช้docker network create mynetและลองอีกครั้ง

ยังdocker network lsไม่แสดงรายการเครือข่ายอีกต่อไป

อะไรคือวิธีที่ถูกต้องในการแชร์เครือข่ายระหว่าง windows และ linux?

คำตอบ

1 CharlesDesbiens Aug 17 2020 at 08:18

การสลับตัวเลือก "Switch to Linux Containers" ทำให้ Docker ของคุณสลับบริบทไปมาระหว่าง linux vm ที่ Docker ทำงานอยู่ด้านบนและระบบปฏิบัติการ windows

เมื่อคุณทำเช่นนี้คุณจะเปลี่ยนไปใช้ทรัพยากรนักเทียบท่าชุดอื่นที่ไม่รู้จักกันได้อย่างมีประสิทธิภาพ พวกเขาอยู่ในระบบปฏิบัติการแยกกัน น่าเสียดายที่คุณไม่สามารถทำสิ่งที่คุณกำลังพยายามทำกับการเขียนได้เนื่องจากการเขียนจะทำงานบน Daemon ตัวเดียวเสมอและ Daemon ตัวเดียวจะทำงานบนระบบปฏิบัติการเดียว แต่คุณสามารถตั้งค่า linux vm ของคุณเองติดตั้งนักเทียบท่าและสร้างฝูง 2 โหนดที่ประกอบด้วยเครื่อง windows ของคุณและ linux VM ของคุณ ด้วยวิธีนี้คุณสามารถเรียกใช้คอนเทนเนอร์ linux ของคุณในที่หนึ่งคอนเทนเนอร์ windows ของคุณบนอีกอันหนึ่งและเชื่อมต่อผ่านเครือข่าย