Docker Bind Mount คืออะไร

Docker Bind Mount Khux Xari



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

บทความนี้จะอธิบาย:







Docker Bind Mount คืออะไร

Docker bind mount อนุญาตให้ผู้ใช้แม็พไฟล์/ไดเร็กทอรีเฉพาะบนเครื่องโฮสต์กับไฟล์/ไดเร็กทอรีภายในคอนเทนเนอร์ ด้วยวิธีนี้ ผู้ใช้สามารถแชร์ข้อมูลระหว่างโฮสต์และคอนเทนเนอร์ และยังสามารถคงข้อมูลไว้ได้แม้ว่าคอนเทนเนอร์จะถูกหยุดหรือลบไปแล้วก็ตาม การเปลี่ยนแปลงใดๆ ที่ทำกับไฟล์ในไดเร็กทอรีหรือไฟล์ที่ใช้ร่วมกันจะมองเห็นได้จากทั้งคอนเทนเนอร์และเครื่องโฮสต์



Bind Mount ทำงานอย่างไรใน Docker

ให้เราดูตัวอย่างและดูว่า bind-mount ทำงานอย่างไรใน Docker สมมติว่าเรามีไดเร็กทอรีว่าง ' ทดสอบ ' ตั้งอยู่ที่ ' C:\นักเทียบท่า ” บนระบบท้องถิ่น ตอนนี้เราต้องการเข้าถึง ' ทดสอบ ” เนื้อหาไดเร็กทอรีที่ตำแหน่ง “ /แอป ” จากภายในภาชนะเฉพาะ ในตัวอย่างนี้ เรียกใช้คอนเทนเนอร์จากอิมเมจ Docker อย่างเป็นทางการ เช่น “ จิงซ์ ” และใช้การผูกเมานต์เพื่อเมานต์ไดเร็กทอรีเฉพาะจากเครื่องโฮสต์ลงในคอนเทนเนอร์



เพื่อความเข้าใจที่ดีขึ้นให้ทำตามขั้นตอนที่ให้ไว้





ขั้นตอนที่ 1: ผูก Mount Directory จากเครื่องโฮสต์ไปยังคอนเทนเนอร์

ขั้นแรก ให้ใช้ “ docker run -d –name <ชื่อคอนเทนเนอร์> -v <เส้นทางต้นทาง>:<เส้นทางปลายทาง> <ชื่อภาพ> ” คำสั่งและเรียกใช้คอนเทนเนอร์ มันผูกไดเร็กทอรีเมานต์จากเครื่องโฮสต์ไปยังคอนเทนเนอร์:



เรียกใช้นักเทียบท่า -d --ชื่อ ต่อของฉัน -ใน ค: / นักเทียบท่า / ทดสอบ: / แอป nginx: ล่าสุด


ที่นี่:

    • -d ตัวเลือก ” ใช้เพื่อเรียกใช้คอนเทนเนอร์ในพื้นหลัง
    • -ชื่อ ” ใช้เพื่อกำหนดชื่อคอนเทนเนอร์
    • ต่อของฉัน ” คือชื่อคอนเทนเนอร์ของเรา
    • -ใน ” ตัวเลือกสร้างวอลุ่มในคอนเทนเนอร์ที่แมปไดเร็กทอรีต้นทางบนเครื่องโฮสต์กับไดเร็กทอรีเป้าหมายในคอนเทนเนอร์
    • C:/นักเทียบท่า/ทดสอบ ” คือพาธของไดเร็กทอรีต้นทาง (เครื่องโลคัล)
    • /แอป ” คือเส้นทางไดเร็กทอรีเป้าหมาย (คอนเทนเนอร์)
    • nginx: ล่าสุด ” เป็นอิมเมจ Docker ล่าสุด:



คำสั่งนี้สร้างคอนเทนเนอร์และอนุญาตให้เข้าถึงไฟล์จากเครื่องโฮสต์ และทำให้ง่ายต่อการจัดการการคงอยู่ของข้อมูล

ขั้นตอนที่ 2: สร้างไฟล์ใน Source Directory บนเครื่องโฮสต์

จากนั้น นำทางไปยังเส้นทางไดเร็กทอรีต้นทาง เช่น “ C:/นักเทียบท่า/ทดสอบ ” บนเครื่องโฮสต์และสร้างไฟล์ข้อความธรรมดาในนั้น ตัวอย่างเช่น เราได้สร้าง “ การสาธิต ' ไฟล์:


ขั้นตอนที่ 3: เข้าถึงไฟล์เครื่องโฮสต์ภายในคอนเทนเนอร์

ตอนนี้ พิมพ์คำสั่งที่ระบุด้านล่างเพื่อเข้าถึงเนื้อหาของคอนเทนเนอร์และเรียกใช้คำสั่งภายใน:

นักเทียบท่า ผู้บริหาร -มัน ต่อของฉัน ทุบตี



เมื่อทำเช่นนั้น เปลือกคอนเทนเนอร์จะเปิดออก

หลังจากนั้น ให้แสดงรายการเนื้อหาของคอนเทนเนอร์โดยใช้คำสั่งที่ให้ไว้:



ในภาพหน้าจอด้านบน เนื้อหาทั้งหมดของคอนเทนเนอร์สามารถมองเห็นได้ เลือกไดเร็กทอรีที่ต้องการและไปที่ไดเร็กทอรี

เปลี่ยนเส้นทางไปที่ “ แอป ” ไดเร็กทอรี:

ซีดี แอป


จากนั้นให้ระบุรายการ “ แอป ” เนื้อหาไดเร็กทอรีเพื่อตรวจสอบว่าไฟล์เครื่องโลคัลมีอยู่ในนั้น:



สังเกตได้ว่า “ เดโม. txt ” มีไฟล์อยู่ภายในคอนเทนเนอร์ และเราสามารถเข้าถึงได้

ขั้นตอนที่ 4: สร้างไฟล์ภายในคอนเทนเนอร์

ถัดไป สร้างไฟล์อื่นภายในคอนเทนเนอร์โดยใช้ปุ่ม “ สัมผัส ' สั่งการ:

สัมผัส ใหม่.txt



เราได้สร้าง “ ใหม่.txt ' ไฟล์.

จากนั้น ตรวจสอบไฟล์ที่สร้างขึ้นใหม่โดยใช้คำสั่งด้านล่าง:



จะเห็นได้ว่าไฟล์ “ ใหม่.txt ” ถูกสร้างขึ้นสำเร็จภายในคอนเทนเนอร์

ขั้นตอนที่ 5: ตรวจสอบไฟล์ในระบบโลคัล

สุดท้าย ไปที่เส้นทางของเครื่องโลคัลและตรวจสอบว่า ' ใหม่.txt ” มีไฟล์หรือไม่:


อย่างที่คุณเห็น ' ใหม่.txt ” มีอยู่ในเครื่องท้องถิ่นและเราสามารถเข้าถึงได้ สิ่งนี้บ่งชี้ว่าการปรับเปลี่ยนจะมีผลกับเครื่องโลคัลด้วย

ขั้นตอนที่ 6: ลบ Docker Container

ตอนนี้ให้นำคอนเทนเนอร์ออกผ่านทาง ' นักเทียบท่า rm ” คำสั่งพร้อมกับชื่อคอนเทนเนอร์:

นักเทียบท่า rm ต่อของฉัน



ต่อของฉัน ” ลบคอนเทนเนอร์เรียบร้อยแล้ว

ขั้นตอนที่ 7: ตรวจสอบให้แน่ใจว่าข้อมูลยังคงอยู่ในเครื่องท้องถิ่น

หลังจากลบคอนเทนเนอร์แล้ว ให้ตรวจสอบว่าข้อมูลยังคงอยู่ในเครื่องโลคัลหรือไม่:


อย่างที่คุณเห็น การเปลี่ยนแปลงยังคงอยู่แม้หลังจากลบคอนเทนเนอร์ที่เชื่อมต่อแล้ว

บทสรุป

Docker bind mount ใช้เพื่อแมปไดเร็กทอรีหรือไฟล์จากระบบโฮสต์ไปยังคอนเทนเนอร์ สร้างลิงก์ระหว่างไดเร็กทอรีหรือไฟล์ที่ระบุบนโฮสต์และระบบไฟล์ของคอนเทนเนอร์ ทำให้ง่ายต่อการจัดการหรือทำงานกับไฟล์ที่เก็บไว้นอกคอนเทนเนอร์ การเปลี่ยนแปลงใดๆ ที่ทำกับไฟล์ในไดเร็กทอรีหรือไฟล์ที่ใช้ร่วมกันจะมีผลทั้งในโฮสต์และคอนเทนเนอร์ บทความนี้อธิบายเกี่ยวกับ Docker bind mount และการทำงานใน Docker