0Pricing
DevOps Bootcamp · บทเรียน

Bind Mount และ tmpfs Mount

เรียนรู้เกี่ยวกับ bind mount สำหรับเข้าถึงไฟล์บนโฮสต์ และ tmpfs mount สำหรับจัดเก็บข้อมูลชั่วคราว

Bind Mount และ tmpfs Mount เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

การจัดเก็บข้อมูลนอกเหนือจากโวลุม

ในบทเรียนก่อนหน้านี้ เราได้เรียนรู้เกี่ยวกับโวลุม Docker สำหรับการจัดเก็บข้อมูลถาวร แต่ถ้าคุณต้องการแชร์ไฟล์โดยตรงจากเครื่องโฮสต์ หรือจัดเก็บข้อมูลชั่วคราวที่ไม่จำเป็นต้องคงอยู่ล่ะ

บทเรียนนี้จะแนะนำอีกสองวิธีในการจัดการข้อมูล ได้แก่ การเมานต์แบบผูก และ การเมานต์ tmpfs ซึ่งให้ความยืดหยุ่นสำหรับกรณีใช้งานที่แตกต่างกัน

Bind Mount และ tmpfs Mount — ภาพประกอบ 1

การเมานต์แบบผูกคืออะไร

การเมานต์แบบผูก ช่วยให้คุณเมานต์ไฟล์หรือไดเรกทอรีจาก เครื่องโฮสต์ เข้าไปในคอนเทนเนอร์ได้ วิธีนี้จะสร้างการเชื่อมโยงโดยตรง ดังนั้นการเปลี่ยนแปลงที่เกิดขึ้นจากฝั่งใดฝั่งหนึ่งจะปรากฏอีกฝั่งทันที

  • เส้นทางบนโฮสต์: ตำแหน่งบนคอมพิวเตอร์ของคุณ
  • เส้นทางในคอนเทนเนอร์: ตำแหน่งภายในคอนเทนเนอร์
  • เหมาะสำหรับการพัฒนา การแชร์การตั้งค่า หรือการเข้าถึงไฟล์บนโฮสต์

การเมานต์แบบผูกในทางปฏิบัติ

มาดูการเมานต์แบบผูกในทางปฏิบัติกัน คำสั่งนี้จะเมานต์ไดเรกทอรีปัจจุบันของคุณ (แทนด้วย $(pwd) บน Linux/macOS หรือ %cd% บน Windows CMD) เข้าไปในไดเรกทอรี /app ของคอนเทนเนอร์

หมายเหตุ: ก่อนเรียกใช้คำสั่ง ให้สร้างไฟล์ชื่อ hello.txt ในไดเรกทอรีปัจจุบัน พร้อมข้อความ เช่น "Hello from host!"

docker run --rm -it \
  -v "$(pwd):/app" \
  alpine:latest sh -c "ls /app && cat /app/hello.txt"

การเมานต์แบบผูกที่อ่านได้อย่างเดียว

บางครั้งคุณอาจต้องการแชร์ข้อมูลจากโฮสต์ แต่ไม่ต้องการให้คอนเทนเนอร์แก้ไขข้อมูลได้ ในกรณีนี้ การเมานต์แบบผูกที่อ่านได้อย่างเดียว จะมีประโยชน์

คุณสามารถระบุ :ro ต่อท้ายเส้นทางเมานต์ หรือใช้แฟล็ก --mount พร้อมกับ readonly เพื่อกำหนดลักษณะนี้ได้

docker run --rm -it \
  -v "$(pwd):/app:ro" \
  alpine:latest sh -c "touch /app/new_file.txt || echo 'Permission denied!'"

ทำความเข้าใจผลลัพธ์แบบอ่านได้อย่างเดียว

เมื่อคุณเรียกใช้คำสั่งก่อนหน้านี้ คุณควรเห็นข้อความ "Permission denied!" ซึ่งยืนยันว่าคอนเทนเนอร์ไม่สามารถสร้างไฟล์ใหม่ในไดเรกทอรี /app ได้ เนื่องจากไดเรกทอรีนี้ถูกเมานต์แบบอ่านได้อย่างเดียว

นี่เป็นคุณลักษณะด้านความปลอดภัยที่ยอดเยี่ยม ซึ่งช่วยปกป้องไฟล์บนโฮสต์จากการเปลี่ยนแปลงโดยไม่ตั้งใจหรือโดยประสงค์ร้ายจากคอนเทนเนอร์

การเมานต์ tmpfs คืออะไร

การเมานต์ tmpfs คือระบบไฟล์ชั่วคราวที่จัดเก็บทั้งหมดในหน่วยความจำของโฮสต์ (RAM) ซึ่งหมายความว่าข้อมูลที่เขียนลงในการเมานต์ tmpfs จะ ไม่คงอยู่ถาวร

  • ข้อมูลจะสูญหายเมื่อคอนเทนเนอร์หยุดทำงาน
  • การอ่านและเขียนข้อมูลเร็วกว่าเมื่อเทียบกับการจัดเก็บบนดิสก์
  • เหมาะสำหรับข้อมูลที่มีความละเอียดอ่อนหรือไฟล์ชั่วคราว

การเมานต์ tmpfs ในทางปฏิบัติ

มาสร้างคอนเทนเนอร์ที่มีการเมานต์ tmpfs กัน เราจะเขียนไฟล์ลงไป จากนั้นออกจากคอนเทนเนอร์ เมื่อคุณเรียกใช้คอนเทนเนอร์ใหม่ ไฟล์ดังกล่าวจะหายไป

แฟล็ก --tmpfs ใช้ระบุจุดเมานต์ภายในคอนเทนเนอร์

docker run --rm -it \
  --tmpfs /app/temp_data \
  alpine:latest sh -c "echo 'Ephemeral data' > /app/temp_data/my_temp_file.txt && ls /app/temp_data"

ตรวจสอบลักษณะชั่วคราวของ tmpfs

หลังจากเรียกใช้คำสั่งล่าสุด คุณจะเห็นรายการ my_temp_file.txt ตอนนี้ให้เรียกใช้คำสั่งนี้เพื่อเริ่มคอนเทนเนอร์ *ใหม่* โดยใช้การตั้งค่าการเมานต์ tmpfs แบบ *เดิม*

คุณจะสังเกตว่าไม่มี my_temp_file.txt อยู่แล้ว นี่เป็นการยืนยันว่าข้อมูลใน tmpfs เป็นข้อมูลชั่วคราวและมีอยู่เฉพาะในช่วงอายุการใช้งานของคอนเทนเนอร์

docker run --rm -it \
  --tmpfs /app/temp_data \
  alpine:latest ls /app/temp_data

การเมานต์แบบผูกเทียบกับการเมานต์ tmpfs

ควรใช้แต่ละแบบเมื่อใด

  • การเมานต์แบบผูก: ใช้สำหรับแชร์ไฟล์บนโฮสต์ (เช่น การตั้งค่าหรือซอร์สโค้ด) กับคอนเทนเนอร์ โดยยังคงข้อมูลไว้และเข้าถึงโฮสต์ได้โดยตรง
  • การเมานต์ tmpfs: ใช้สำหรับข้อมูลชั่วคราวที่ไม่ต้องการให้คงอยู่ ซึ่งต้องการประสิทธิภาพสูงหรือไม่ควรอยู่ต่อหลังรีสตาร์ตคอนเทนเนอร์ (เช่น แคชหรือข้อมูลขณะทำงานที่มีความละเอียดอ่อน)

ทั้งสองแบบช่วยเสริมโวลุม Docker ทำให้มีตัวเลือกจัดการข้อมูลได้อย่างครบถ้วน

ตรวจสอบความเข้าใจ: ประเภทการเมานต์

ข้อความใดต่อไปนี้กล่าวถูกต้องเกี่ยวกับการเมานต์แบบผูกและการเมานต์ tmpfs

สรุป: เครื่องมือจัดการข้อมูล

ยอดเยี่ยมมากครับ คุณได้เพิ่มเครื่องมือจัดการข้อมูล Docker ให้กับชุดเครื่องมือของคุณแล้ว

  • การเมานต์แบบผูก เชื่อมโยงไฟล์หรือไดเรกทอรีบนโฮสต์กับคอนเทนเนอร์ เหมาะอย่างยิ่งสำหรับการพัฒนาและการแชร์การตั้งค่า
  • การเมานต์ tmpfs ให้พื้นที่จัดเก็บชั่วคราวในหน่วยความจำ เหมาะสำหรับข้อมูลที่ไม่ต้องการให้คงอยู่หรือข้อมูลที่มีความละเอียดอ่อน

การทำความเข้าใจตัวเลือกเหล่านี้จะช่วยให้คุณเลือกโซลูชันการจัดเก็บข้อมูลที่เหมาะสมสำหรับแอปพลิเคชันที่ทำงานในคอนเทนเนอร์

คำถามที่พบบ่อย

บทเรียน “Bind Mount และ tmpfs Mount” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Bind Mount และ tmpfs Mount” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Bind Mount และ tmpfs Mount”

เรียนรู้เกี่ยวกับ bind mount สำหรับเข้าถึงไฟล์บนโฮสต์ และ tmpfs mount สำหรับจัดเก็บข้อมูลชั่วคราว คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “Bind Mount และ tmpfs Mount” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานเครือข่ายคอนเทนเนอร์
  2. Docker Volume เพื่อการคงอยู่ของข้อมูล
  3. Bind Mount และ tmpfs Mount
  4. เครือข่ายบริดจ์แบบกำหนดเองและการค้นหาบริการ
← กลับไปที่ DevOps Bootcamp