Update3: 06.2019
บางความคิดเห็นบอกว่าคำตอบไม่ชัดเจนฉันจะพยายามชี้แจง
TL; DR:
ถาม:คอนเทนเนอร์ Windows สามารถทำงานบน Linux ได้หรือไม่
ตอบ: ไม่ได้พวกเขาไม่สามารถ
ตู้คอนเทนเนอร์กำลังใช้ทรัพยากรระบบปฏิบัติการและไดรฟ์เวอร์พื้นฐานดังนั้นคอนเทนเนอร์ Windows สามารถทำงานบน Windows เท่านั้นและคอนเทนเนอร์ Linux สามารถทำงานบน Linux ได้เท่านั้น
ถาม:แล้ว Docker สำหรับ Windows ล่ะ หรือโซลูชันที่ใช้ VM อื่น ๆ
ตอบ:นักเทียบท่าสำหรับ Windows อนุญาตให้คุณจำลองการใช้งานคอนเทนเนอร์LinuxบนWindowsแต่ภายใต้ฮูดที่ Linux VM สร้างขึ้นดังนั้นคอนเทนเนอร์ Linuxยังคงทำงานบน Linux และคอนเทนเนอร์ Windows กำลังทำงานบน WindowsWindows
โบนัส: อ่านบทความที่ดีมากเกี่ยวกับการใช้งาน Linux docker container บน Windows
ถาม:ฉันควรทำอย่างไรกับแอป. Net Framework 462 หากฉันต้องการรันในคอนเทนเนอร์
ตอบ:ขึ้นอยู่กับ ทำตามคำแนะนำหลายประการ:
- หากเป็นไปได้ให้ย้ายไปที่. Net Core เนื่องจาก. Net Core ให้การสนับสนุนคุณสมบัติที่สำคัญที่สุดของ. Net Framework และ. Net Framework 4.8 จะเป็นเวอร์ชันสุดท้ายของ. Net Framework
หากคุณไม่สามารถย้ายไปที่. Net Core - ตามที่ @Sebastian พูดถึง - คุณสามารถแปลงไลบรารี่ของคุณเป็น. Net Standard และมีแอพ 2 เวอร์ชัน - หนึ่งแอพใน. Net Framework 4.6.2 และอีกหนึ่งใน. Net Core - ไม่ใช่ เห็นได้ชัดเสมอว่า Visual Studio รองรับมันค่อนข้างดี (ด้วยการกำหนดเป้าหมายหลายอย่าง) แต่การพึ่งพาบางอย่างอาจต้องการการดูแลเป็นพิเศษ
(แนะนำน้อยกว่า) ในบางกรณีคุณสามารถเรียกใช้ windows container บรรจุภัณฑ์ของ Windows กำลังเติบโตขึ้นเรื่อย ๆ พร้อมการรองรับแพลตฟอร์มที่ดีขึ้นเช่น Kubernetes แต่เพื่อให้สามารถเรียกใช้รหัส. Net Framework คุณยังคงต้องรันบนอิมเมจพื้นฐานของ "Server Core" ซึ่งใช้พื้นที่ประมาณ 1.4 GB ในกรณีที่เกิดขึ้นได้ยากเช่นเดียวกันคุณสามารถโยกย้ายรหัสของคุณไปยัง. Net Core แต่ยังคงทำงานบนเซิร์ฟเวอร์ Windows Nano ด้วยขนาดภาพ 95 MB
ออกจากยังอัปเดตเก่าสำหรับประวัติ
Update2: 08.2018
หากคุณใช้ Docker-for-Windows ตอนนี้คุณสามารถเรียกใช้ทั้ง windows และ linux containerพร้อมกันได้ที่ : https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- และลินุกซ์คอนเทนเนอร์พร้อมกัน /
โบนัส:ไม่เกี่ยวข้องโดยตรงกับคำถาม แต่ตอนนี้คุณสามารถเรียกใช้ไม่เพียง แต่คอนเทนเนอร์ linux เท่านั้น แต่ยังมี orchestrator อย่าง kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-สก์ท็อปที่มีความเสถียรช่องทาง /
อัปเดตที่ 2018:
คำตอบทั่วไปโดยทั่วไปนั้นถูกต้องแต่หลายเดือนที่ผ่านมานักเทียบท่าได้เพิ่มฟีเจอร์การทดลอง LCOW (ที่เก็บอย่างเป็นทางการของ GitHub )
จากโพสต์นี้ :
Docker for Windows ไม่ได้ใช้งานคอนเทนเนอร์ Linux อยู่ใช่ไหม ถูกตัอง. Docker สำหรับ Windows สามารถเรียกใช้คอนเทนเนอร์ Linux หรือ Windows พร้อมรองรับคอนเทนเนอร์ Linux ผ่าน Hyper-V Moby Linux VM (เหมือน Docker สำหรับ Windows 17.10 VM นี้ใช้ LinuxKit)
การตั้งค่าสำหรับการใช้งานคอนเทนเนอร์ Linux ด้วย LCOW นั้นง่ายกว่าสถาปัตยกรรมก่อนหน้านี้มากซึ่ง Hyper-V Linux VM รัน Linux Docker daemon พร้อมกับคอนเทนเนอร์ทั้งหมดของคุณ ด้วย LCOW, Docker daemon จะทำงานเป็นกระบวนการ Windows (เช่นเดียวกับเมื่อเรียกใช้คอนเทนเนอร์ของ Docker Windows) และทุกครั้งที่คุณเริ่มต้นคอนเทนเนอร์ Linux นักเทียบท่าเปิดตัวไฮเปอร์ไวเซอร์ Hyper-V ขั้นต่ำที่เรียกใช้ VM ด้วยเคอร์เนล Linux, runc และกระบวนการคอนเทนเนอร์ วิ่งอยู่ด้านบน
เพราะมีเพียงหนึ่งภูตหางและเนื่องจากภูตว่าตอนนี้ทำงานบน Windows ฉันทีเร็ว ๆ นี้จะเป็นไปได้ที่จะเรียกใช้ Windows และ Linux หางภาชนะด้านโดยด้านใน namespace สิ่งนี้จะปลดล็อคสถานการณ์การพัฒนาและการผลิตที่น่าตื่นเต้นมากมายสำหรับผู้ใช้ Docker บน Windows
เดิม:
ตามที่ระบุไว้ในความคิดเห็นโดย @PanagiotisKanavos, ตู้คอนเทนเนอร์แบบนี้ไม่ได้สำหรับการทำงานแบบเสมือนและพวกเขากำลังใช้ทรัพยากรของเครื่องโฮสต์ ดังนั้นตอนนี้ windows container ไม่สามารถเรียกใช้ "as-is" บนเครื่อง linux
แต่ - คุณสามารถทำได้โดยใช้ VM - เพราะมันทำงานบน windows คุณสามารถติดตั้ง windows VM บนโฮสต์ linux ของคุณซึ่งจะอนุญาตให้เรียกใช้ windows container
ด้วย IMHO ที่รันด้วยวิธีนี้บนสภาพแวดล้อม PROD จะไม่เป็นความคิดที่ดีที่สุด
นอกจากนี้คำตอบนี้ให้รายละเอียดเพิ่มเติม