สำหรับบริบท:
นักเทียบท่า - รุ่น
นักเทียบท่าเวอร์ชัน 20.10.7, บิลด์ 20.10.7-0ubuntu5~20.04.2
ทดสอบ 1 : ปริมาณคือ /myvolume
นี่คือ Dockerfile ของฉัน
จากเทือกเขาแอลป์:ล่าสุด
ผู้ใช้ 1,000:1000
VOLUME / ปริมาตรของฉัน
และคำสั่ง build + run :
นักเทียบท่า build -t myimage
นักเทียบท่าเรียกใช้ --rm -it myimage.dll
จากนั้นเมื่ออยู่ในคอนเทนเนอร์:
/$ใครอะ
whoami: ไม่ทราบ uid 1,000
/ $ ls -ld /myvolume/
drwxr-xr-x 2 รูท 4096 8 มี.ค. 09:22 /myvolume/
/$ สัมผัส /myvolume/test
สัมผัส: /myvolume/test: ปฏิเสธการอนุญาต
ถึงตอนนี้ ไม่แปลกใจเลยที่ผู้ใช้ UID 1000 จะไม่สามารถเขียนถึง /myvolume
.
ทดสอบ 2 : ปริมาณคือ /tmp
ไฟล์ Docker ของฉัน
จากเทือกเขาแอลป์:ล่าสุด
ผู้ใช้ 1,000:1000
ปริมาณ/tmp
(คำสั่ง build + run เดียวกัน) และในคอนเทนเนอร์:
/$ใครอะ
whoami: ไม่ทราบ uid 1,000
/$ ls -ld /tmp
drwxrwxrwt 2 รูท รูท 4096 24 พ.ย. 09:20 /tmp
/$ สัมผัส /tmp/test
/ $ ls -l /tmp
รวม 0
-rw-r--r-- 1 1,000 1,000 0 8 มี.ค. 09:23 น. ทดสอบ
ตอนนี้ระดับเสียงเปลี่ยนเป็น /tmp
ผู้ใช้ที่มี UID 1000 สามารถเขียนลงไปได้
ฉันรู้ /tmp
โดยทั่วไปเขียนได้ทั่วโลกใน GNU/Linux แต่ที่นี่ มันดู "มหัศจรรย์" (ซึ่งใช้ได้เฉพาะเมื่อ Harry Potter อยู่ใกล้ๆ) และฉันสงสัยว่า:
ก) ฉันขาดบางอย่างเกี่ยวกับวิธีการทำงานของ Docker และวอลุ่ม (โปรดอ้างอิงถึงเอกสารประกอบ/บทช่วยสอนที่เหมาะสม)
b) เป็นเรื่องบังเอิญเนื่องจากการตั้งค่าของฉัน / มีบางอย่างขาดหายไปให้ชัดเจนและหยุดพึ่งพาค่าเริ่มต้น
c) เป็นคุณสมบัติที่ไม่มีเอกสารซึ่งอาจเปลี่ยนแปลงได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบล่วงหน้า
d) มันเป็นคุณสมบัติที่ฉันไม่สามารถค้นหาเอกสารที่เกี่ยวข้องได้ และฉันสามารถวางใจได้อย่างปลอดภัยว่าเมื่อแนบวอลุ่มกับ /tmp
มันเขียนได้ทั่วโลกเสมอ