สำหรับการเปลี่ยนแปลง วันนี้เราจะมีบทความที่ค่อนข้างสั้นและไม่ซับซ้อนเกี่ยวกับ Docker containers automation framework เราจะเรียนรู้วิธีเมานต์ข้อมูลภายในคอนเทนเนอร์ วิธีแชร์ข้อมูล และบิตและชิ้นส่วนที่จำเป็นทั้งหมดเพื่อทำให้อินสแตนซ์ของเราเป็นระบบที่มีประโยชน์
ถึงตอนนี้ คุณคงเพลิดเพลินแล้ว - และนั่นเป็นคำศัพท์เสรี - คู่มือแนะนำที่มีรายละเอียดมาก จากนั้นเราก็ขลุกอยู่กับบริการ เครือข่าย และแก้ไขข้อผิดพลาดที่ยากบางอย่าง บทช่วยสอนนี้ยังคงดำเนินตามประเพณีทีละขั้นตอน ดังนั้นจึงควรเรียบง่ายและชัดเจน เราเริ่มต้นกันเลย.
พื้นฐาน
กระบวนการเปิดเผยข้อมูลโฮสต์ภายในคอนเทนเนอร์นั้นค่อนข้างเรียบง่าย และคล้ายกับคำสั่งเมาต์ คุณจัดเตรียมไดเร็กทอรีหรือไฟล์ต้นทาง และชี้ไปยังไดเร็กทอรีหรือไฟล์เป้าหมาย คล้ายกับพอร์ตซึ่งประกอบด้วยโฮสต์และชิ้นส่วนคอนเทนเนอร์
นักเทียบท่ารัน -it -v /root/testing:/dedoimedo centos:latest /bin/bash
เรากำลังรันคอนเทนเนอร์ใหม่ด้วย Bash shell และเรากำลังจะติดตั้งไดเร็กทอรี /root/testing ของโฮสต์ภายในคอนเทนเนอร์ภายใต้ /dedoimedo บนโฮสต์ ต้นทางสามารถเป็นอะไรก็ได้ รวมทั้งการเมานต์ NFS ซึ่งเปลี่ยนสิ่งนี้ให้กลายเป็นสิ่งที่แบ่งปันข้อมูลระยะไกลที่น่ารักได้อย่างมีประสิทธิภาพ ในทางปฏิบัติ NFS ป้องกันการส่งออกซ้ำ แต่นี่เป็นการโกงจริงๆ เนื่องจากคุณยังคงทำสิ่งเดิมบนโฮสต์เดิม
ภายในคอนเทนเนอร์ ตอนนี้คุณสามารถตรวจสอบเนื้อหาของไดเร็กทอรี /dedoimedo และดูว่ามีอะไรเก็บไว้ข้างในบ้าง อย่างไรก็ตาม ในมาตรฐาน CentOS บิลด์เริ่มต้น ซึ่งเป็นกรณีทดสอบของเราที่นี่ คุณอาจพบข้อผิดพลาด และสิ่งนี้มีความเกี่ยวข้อง เนื่องจากคุณอาจพบปัญหาที่คล้ายกัน และควรเตรียมพร้อมและเต็มใจที่จะแก้ไขข้อบกพร่อง นอกจากนี้ ยังแสดงให้เห็นว่าคุณลักษณะด้านความปลอดภัยบางครั้งอาจเป็นอันตรายได้
ล
ls:ไม่สามารถเปิดไดเรกทอรีได้ .:สิทธิ์ถูกปฏิเสธ
คุณลักษณะด้านความปลอดภัย ใช่ แน่นอน SELinux โชคดีที่ปัญหาสามารถแก้ไขได้ คุณสามารถเปลี่ยนนโยบายการบังคับใช้สำหรับโมดูล หรือคุณสามารถเพิ่มกฎใหม่ที่จะอนุญาตให้คอนเทนเนอร์เข้าถึงไดรฟ์ข้อมูลที่ติดตั้ง
เซ็ตเทนฟอร์ซ 0
และกฎถ้าคุณต้องการไปทางนั้น:
chcon -Rt svirt_sandbox_file_t /
จากนั้นคุณจะเห็นเนื้อหา และคุณสามารถเริ่มเล่น เขียนไฟล์ ฯลฯ อันที่จริง ถ้าเราดูที่โฮสต์ก่อน สร้างไฟล์ใหม่ภายในไดเร็กทอรีที่เมาท์ เราจะเห็นสิ่งต่อไปนี้ ยกเว้นเนื้อหาจริงของ หลักสูตร:
การแชร์ระหว่างคอนเทนเนอร์
เช่นเดียวกับที่เราทำกับระบบเครือข่าย คุณอาจต้องการเปิดเผยข้อมูลภายในคอนเทนเนอร์หนึ่งต่อคอนเทนเนอร์อื่น ดังนั้นข้อมูลเหล่านั้นจึงกลายเป็นคอนเทนเนอร์ปริมาณข้อมูล สิ่งนี้อาจมีประโยชน์มากหากคุณจัดกลุ่มฟังก์ชันการทำงานของคอนเทนเนอร์ และคุณยังสามารถประหยัดพื้นที่ได้เป็นจำนวนมาก นอกจากนี้ คุณยังสามารถเชื่อมโยงไดรฟ์ข้อมูลระหว่างคอนเทนเนอร์ ซึ่งช่วยให้คุณจำกัดจำนวนคอนเทนเนอร์ที่เข้าถึงข้อมูลโฮสต์พร้อมกันได้ สิ่งนี้มีประโยชน์หากคุณไม่มีกลไกการล็อคการเขียนที่มีประสิทธิภาพบนโฮสต์ ซึ่งมักจะเป็นจริงสำหรับระบบที่คล้าย UNIX
ลองทำตัวอย่างรวดเร็ว เราจะเริ่มคอนเทนเนอร์ด้วยชื่อแหล่งข้อมูล มันจะขึ้นต้นด้วย /data mount point เราสามารถตรวจสอบให้แน่ใจว่า /data ถูกแมปกับไดเร็กทอรีบนโฮสต์ แต่ตอนนี้ก็ไม่เป็นไร จากนั้น เราจะสร้างคอนเทนเนอร์ที่สอง ซึ่งจะใช้ไดรฟ์ข้อมูลจากแหล่งข้อมูลชื่อคอนเทนเนอร์
นักเทียบท่ารัน -ti --name data-source -v /data centos:latest /bin/bash
นักเทียบท่ารัน -ti --volumes- จากแหล่งข้อมูล centos:latest /bin/bash
ตอนนี้ ถ้าเราดูที่คอนเทนเนอร์ทั้งสองของเรา ทั้งสองจะมีไดเร็กทอรี /data ยกเว้น data-source จะเป็นจุดเริ่มต้นที่เรียกว่า data สำหรับคอนเทนเนอร์ทั้งหมดที่รันด้วยตัวเลือก -volumes-from คุณสามารถประหยัดพื้นที่ข้อมูลได้มาก ควบคุมวิธีที่คอนเทนเนอร์ใช้และเข้าถึงข้อมูลต้นฉบับ และทดสอบการกำหนดค่าซอฟต์แวร์หลายรายการได้ง่ายขึ้น เรียบร้อยมากโดยรวม
[root@68d3ed5e243a ข้อมูล]# pwd
/ข้อมูล
[root@68d3ed5e243a data]# touch STUFF
[root@68d3ed5e243a data]#
และคอนเทนเนอร์ที่สอง:
[root@7aed935cc156 /]# ls -la /data
รวม 4
drwxr-xr-x. 2 รูท 18 พฤษภาคม 1 11:46 น.
drwxr-xr-x. 18 รูท 4096 1 พฤษภาคม 11:45 ..
-rw-r--r--. 1 รูท 0 1 พฤษภาคม 11:46 STUFF
[root@7aed935cc156 /]#
อะไรต่อไป?
เชื่อหรือไม่ว่าเราจะหยุดอยู่แค่จุดนี้ มีขั้นตอนอื่นๆ ที่เราสามารถทำได้ เช่น การสำรองข้อมูล การลบข้อมูล และอื่นๆ แต่นั่นเป็นหัวข้อที่แยกต่างหาก ในขณะนี้ เรามีเวลามากพอที่จะเริ่มทำงานกับปริมาณข้อมูลและเปิดเผยภายในคอนเทนเนอร์เป็นจุดต่อเชื่อม อย่างไรก็ตาม ตามกฎทั่วไป คุณอาจต้องการใช้ข้อมูลแบบอ่านอย่างเดียวสำหรับเครื่องมือสภาพแวดล้อมและการกำหนดค่า คอนเทนเนอร์วอลุ่มสำหรับข้อมูลขนาดใหญ่ ไดเร็กทอรีแบบง่ายขนาดเล็กและจุดต่อเชื่อมสำหรับการทดสอบ และอื่นๆ
สรุป
การจัดการปริมาณนักเทียบท่าค่อนข้างง่าย และผมเชื่อว่าเทคโนโลยีคอนเทนเนอร์ด้านนี้ยังคงต้องเติบโตก่อนที่จะถึงระดับวุฒิภาวะเช่นเดียวกับส่วนอื่นๆ ของเฟรมเวิร์ก ไม่มีคุณลักษณะมากมายเกินไป และควรมีวิธีเพิ่มเติมในการควบคุมข้อมูล รวมถึงสแนปชอต การสนับสนุนในตัวสำหรับการกระจายข้อมูลและการขนานข้อมูล และอื่นๆ
อย่างน้อยที่สุด คุณก็ได้เรียนรู้สิ่งใหม่ๆ สองสามอย่างในบทช่วยสอนนี้ รวมถึงวิธีสร้างจุดเชื่อมต่อและเมาต์ปริมาณข้อมูล วิธีเชื่อมโยงพวกมัน ตลอดจนแก้ไขปัญหาเล็กๆ น้อยๆ ระหว่างทาง บางทีคู่มือนี้อาจดูเปล่าๆ ไปบ้างเมื่อเทียบกับบทความอื่นๆ แต่เราไม่ต้องการบทความที่หนาและไม่มีวันจบเสมอไป บางครั้งก็เป็นเรื่องปกติที่จะพูดให้สั้นและไพเราะ แน่นอน บนกระสุนจุดจบนั้น
ไชโย