นักเทียบท่าถูกโยนลงถังฝากเวอร์ชวลไลเซชันเพราะผู้คนคิดว่ามันเป็นฮาร์ดแวร์เสมือนจริงที่อยู่ด้านล่าง นี่คือการเรียกชื่อผิดที่แทรกซึมจากคำศัพท์ที่นักเทียบท่าใช้งานส่วนใหญ่เป็นคำว่าคอนเทนเนอร์
อย่างไรก็ตามนักเทียบท่าไม่ได้ทำอะไรที่มหัศจรรย์เกี่ยวกับการทำเวอร์ชวลฮาร์ดแวร์ของระบบ ค่อนข้างใช้ประโยชน์จากความสามารถของเคอร์เนล Linux เพื่อสร้าง "รั้ว" รอบ ๆ สิ่งอำนวยความสะดวกหลัก ๆ ซึ่งอนุญาตให้กระบวนการโต้ตอบกับทรัพยากรเช่นเครือข่ายระบบแฟ้มและการอนุญาต (เหนือสิ่งอื่นใด) เพื่อให้เห็นภาพลวงตาที่คุณกำลังโต้ตอบ ด้วยระบบการทำงานที่สมบูรณ์
นี่คือตัวอย่างที่แสดงให้เห็นถึงสิ่งที่เกิดขึ้นเมื่อเราเริ่มคอนเทนเนอร์ Docker จากนั้นป้อนผ่านการเรียก/bin/bash
ใช้
$ docker run -it ubuntu:latest /bin/bash
root@c0c5c54062df:/#
ตอนนี้จากภายในคอนเทนเนอร์นี้ถ้าเราเรียกใช้ps -eaf
:
สลับไปยังแท็บเทอร์มินัลอื่นที่เราเข้าสู่ระบบโฮสต์ที่โฮสต์คอนเทนเนอร์ Docker เราสามารถดูพื้นที่กระบวนการที่คอนเทนเนอร์ "กำลังใช้งานจริง"
ตอนนี้ถ้าเรากลับไปที่แท็บ Docker และเรียกใช้กระบวนการหลายอย่างภายในและทำกระบวนการทั้งหมดเราจะเห็นว่าตอนนี้เรามีกระบวนการลูกหลายกระบวนการที่ทำงานภายใต้กระบวนการ Bash หลักซึ่งเราเริ่มต้นเป็นส่วนหนึ่งของการเปิดตัวคอนเทนเนอร์ Docker
หมายเหตุ:กระบวนการนี้มี 4 sleep 1000
คำสั่งที่กำลังแบ็กกราวด์
ขอให้สังเกตว่าภายใน Docker container กระบวนการนั้นได้รับการกำหนด ID กระบวนการ (PID) 48-51 อย่างไร ดูพวกเขาในps -eaf
ผลลัพธ์ในของพวกเขาเช่นกัน:
อย่างไรก็ตามด้วยภาพถัดไปภาพ“ วิเศษ” ส่วนใหญ่ที่นักเทียบท่ากำลังแสดงนั้นถูกเปิดเผย
มาดูกันว่าsleep 1000
กระบวนการ4 กระบวนการเป็นเพียงแค่กระบวนการลูกกับกระบวนการ Bash ดั้งเดิมของเราหรือไม่ โปรดทราบว่า/bin/bash
ในความเป็นจริงแล้วกระบวนการย่อยของ Docker container นั้นเป็นกระบวนการย่อยของ daemon
ตอนนี้ถ้าเราต้องรอ 1000+ วินาทีเพื่อให้sleep 1000
คำสั่งดั้งเดิมเสร็จสิ้นจากนั้นเรียกใช้คำสั่งใหม่อีก 4 รายการและเริ่มต้นนักเทียบท่าคอนเทนเนอร์อื่นเช่นนี้:
$ docker run -it ubuntu:latest /bin/bash
root@450a3ce77d32:/#
เอาต์พุตของโฮสต์คอมพิวเตอร์ps -eaf
จะเป็นดังนี้:
และคอนเทนเนอร์ Docker อื่น ๆ ทั้งหมดจะปรากฏเป็นกระบวนการภายใต้ Docker daemon
ดังนั้นคุณจะเห็นได้ว่า Docker ไม่ได้จำลองเสมือนจริง ( ในแง่ดั้งเดิม ) มันสร้าง "รั้ว" รอบ ๆ ทรัพยากรเคอร์เนลที่หลากหลายและ จำกัด การมองเห็นพวกมันสำหรับกระบวนการ + ลูก ๆ