นักเทียบท่าแชร์เครือข่ายกับหน้าต่างและคอนเทนเนอร์ลินุกซ์
ฉันต้องการเชื่อมต่อ 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?
คำตอบ
การสลับตัวเลือก "Switch to Linux Containers" ทำให้ Docker ของคุณสลับบริบทไปมาระหว่าง linux vm ที่ Docker ทำงานอยู่ด้านบนและระบบปฏิบัติการ windows
เมื่อคุณทำเช่นนี้คุณจะเปลี่ยนไปใช้ทรัพยากรนักเทียบท่าชุดอื่นที่ไม่รู้จักกันได้อย่างมีประสิทธิภาพ พวกเขาอยู่ในระบบปฏิบัติการแยกกัน น่าเสียดายที่คุณไม่สามารถทำสิ่งที่คุณกำลังพยายามทำกับการเขียนได้เนื่องจากการเขียนจะทำงานบน Daemon ตัวเดียวเสมอและ Daemon ตัวเดียวจะทำงานบนระบบปฏิบัติการเดียว แต่คุณสามารถตั้งค่า linux vm ของคุณเองติดตั้งนักเทียบท่าและสร้างฝูง 2 โหนดที่ประกอบด้วยเครื่อง windows ของคุณและ linux VM ของคุณ ด้วยวิธีนี้คุณสามารถเรียกใช้คอนเทนเนอร์ linux ของคุณในที่หนึ่งคอนเทนเนอร์ windows ของคุณบนอีกอันหนึ่งและเชื่อมต่อผ่านเครือข่าย