ยินดีต้อนรับสู่ Arcane Weekly วันนี้ ฉันต้องการพูดคุยกับคุณเกี่ยวกับปัญหาที่คุณไม่น่าจะพบ แต่ถ้าคุณพบ คุณต้องการวิธีแก้ปัญหาที่รวดเร็วและสะดวก เครื่องมือที่อยู่ในมือ:ตู้คอนเทนเนอร์ LXD, Docker ภารกิจในมือ:คุณต้องการทำงานทั้งสองอย่างพร้อมกัน โดยเฉพาะอย่างยิ่ง คุณต้องการวางไข่คอนเทนเนอร์ LXD จากนั้นภายในนั้น ให้เริ่มคอนเทนเนอร์ Docker ทำไม ทำไมไม่
จากนั้นปัญหาที่คุณมีมีดังนี้ การดำเนินการ Docker ล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้:นักเทียบท่า:การตอบสนองข้อผิดพลาดจาก daemon:การสร้างรันไทม์ OCI ล้มเหลว:container_linux.go:367:การเริ่มกระบวนการคอนเทนเนอร์เกิดจาก:process_linux.go:495:คอนเทนเนอร์เริ่มต้นเกิดจาก:rootfs_linux.go:60:การเมานต์ " proc" ถึง rootfs ที่ "/proc" สาเหตุ:สิทธิ์ถูกปฏิเสธ:ไม่ทราบ มีข้อความมากมายที่นั่น มาแก้ปัญหานี้กันเถอะ
ปัญหาในรายละเอียดเพิ่มเติม
โดยปกติ เมื่อคุณรันคอนเทนเนอร์ Docker คุณไม่ควรมีปัญหาใดๆ ในการเข้าถึง /proc แต่ข้อผิดพลาดข้างต้นบอกเราว่าไม่สามารถทำได้ เป็นข้อความที่ค่อนข้างสับสน เนื่องจากมีข้อมูลจำนวนมาก ซึ่งสร้างร่องรอยที่เข้าใจผิด จริงอยู่ อาจมีเหตุผลมากมายที่ทำให้คุณประสบปัญหา ในกรณีของฉัน การตั้งค่าเป็นแบบวานิลลาใหม่เอี่ยม โดยไม่มีการปรับแต่งที่บ้าๆ บอๆ ไม่มีข้อผิดพลาดอื่นๆ และสำหรับวัตถุประสงค์ในทางปฏิบัติทั้งหมด Docker ได้รับการติดตั้งและกำหนดค่าอย่างถูกต้อง
จากนั้นฉันก็คิดว่าฉันอาจต้องการดูว่า LXD ทำสิ่งต่างๆ อย่างไร และบางทีนี่อาจทำให้ฉันเข้าใจมากขึ้นว่าทำไมฉันถึงเห็นปัญหานี้ ในไม่ช้าฉันก็พบบทความกึ่งเอกสารเก่าเกี่ยวกับ LXD ซึ่งอธิบายสถานการณ์ ด้วยเหตุผลด้านความปลอดภัย คอนเทนเนอร์ไม่ได้รับอนุญาตให้เข้าถึง /proc และ /sys ด้วยวิธีที่ไม่ปลอดภัย วิธีแก้ปัญหาสำหรับสิ่งนี้ - โดยนัยด้านความปลอดภัยที่เกี่ยวข้อง - คือการอนุญาตการเข้าถึงดังกล่าว
วิธีแก้ปัญหา
สิ่งที่คุณต้องทำคืออนุญาตการซ้อนสำหรับคอนเทนเนอร์ที่ได้รับผลกระทบ
lxc เปิดตัว "อิมเมจ" "ชื่อคอนเทนเนอร์" -c security.nesting=true
หากมีคอนเทนเนอร์อยู่ ก่อนที่คุณจะเริ่ม:
lxc config ตั้งค่า "ชื่อคอนเทนเนอร์" security.nesting จริง
จากนั้นเริ่มคอนเทนเนอร์:
lxc เริ่ม "ชื่อคอนเทนเนอร์"
หากกำลังทำงานอยู่ ให้หยุดคอนเทนเนอร์ ตั้งค่านโยบาย จากนั้นเริ่มคอนเทนเนอร์อีกครั้ง การดำเนินการนี้ไม่มีการทำลาย ดังนั้นหากคุณพบปัญหาหลังจากที่คุณสร้างคอนเทนเนอร์แล้วเท่านั้น คุณจะไม่สูญเสียงานหรือข้อมูลใดๆ ภายในคอนเทนเนอร์ การตั้งค่ายังสามารถย้อนกลับได้อย่างสมบูรณ์ และงานของเราจะเสร็จสิ้นที่นี่เพื่อน
บทสรุป
เป็นเรื่องน่าสนใจที่เห็นว่าตอนนี้ฉันเพิ่งพบปัญหาที่มีมาประมาณห้าปีแล้ว หรือหลายคนประสบปัญหานี้แต่ข้อมูลกลับหายากและกระจัดกระจาย ถ้าคุณต้องการใช้คอนเทนเนอร์ซ้อน คุณต้องแก้ไขนโยบายความปลอดภัยสำหรับคอนเทนเนอร์ที่ได้รับผลกระทบใน LXD นี่เป็นเคล็ดลับที่ค่อนข้างง่าย แน่นอนว่ามีมากกว่านั้น เช่น แนวคิดของคอนเทนเนอร์ที่มีสิทธิพิเศษและไม่มีสิทธิพิเศษ และข้อควรพิจารณาด้านความปลอดภัยอื่นๆ แต่ถ้างานของคุณไม่เกี่ยวกับความปลอดภัย การเปลี่ยนแปลงนี้ก็ไม่มีข้อเสีย
เอกสารที่ดีกว่าจะช่วยได้ ข้อความแสดงข้อผิดพลาดที่เป็นความลับก็น้อยลงเช่นกัน ในขณะเดียวกัน ให้ลองคิดว่าเหตุใดในการตั้งค่าของคุณ อาจมีข้อผิดพลาดเกี่ยวกับสิทธิ์สำหรับสิ่งที่คุณพยายามทำ และสิ่งนี้จะนำคุณไปสู่ทิศทางที่ถูกต้อง เมื่อคุณรู้วิธีกำหนดกรอบของปัญหาแล้ว คุณก็เสร็จ 80% แล้ว ตอนนี้คุณสามารถทำคอนเทนเนอร์ภายในคอนเทนเนอร์ทั้งหมดได้:Yo Dawn ฉันชอบคอนเทนเนอร์ ดังนั้นเราจึงใส่คอนเทนเนอร์ในคอนเทนเนอร์ของคุณ ... Inception โบนัส:ลองดูว่าคุณทำรังได้กี่ระดับก่อนที่จักรวาลจะระเบิด
ไชโย