ในส่วนของการแปลชุดเนื้อหาเกี่ยวกับ Docker ของวันนี้ เราจะพูดถึงการทำงานกับข้อมูล โดยเฉพาะเกี่ยวกับวอลุ่มนักเทียบท่า ในเอกสารเหล่านี้ เราเปรียบเทียบเอ็นจิ้นซอฟต์แวร์ Docker กับการเปรียบเทียบที่กินได้ต่างๆ อย่างต่อเนื่อง เราอย่าได้เบี่ยงเบนไปจากประเพณีนี้ที่นี่เช่นกัน ปล่อยให้ข้อมูลใน Docker เป็นเครื่องเทศ ในโลกนี้มีเครื่องเทศหลายประเภท และใน Docker ก็มีหลายวิธีในการทำงานกับข้อมูล
→
→
→
→
→
→
โปรดทราบว่าเนื้อหานี้จัดทำขึ้นโดยใช้กลไก Docker เวอร์ชัน 18.09.1 และเวอร์ชัน API
ข้อมูลใน Docker สามารถจัดเก็บได้ชั่วคราวหรือถาวร เริ่มต้นด้วยข้อมูลเวลา
การจัดเก็บข้อมูลชั่วคราว
ในคอนเทนเนอร์ Docker คุณสามารถจัดระเบียบงานด้วยข้อมูลชั่วคราวได้สองวิธี
ตามค่าเริ่มต้น ไฟล์ที่สร้างโดยแอปพลิเคชันที่ทำงานในคอนเทนเนอร์จะถูกจัดเก็บไว้ในเลเยอร์ที่เขียนได้ของคอนเทนเนอร์ เพื่อให้กลไกนี้ทำงานได้ ไม่จำเป็นต้องกำหนดค่าพิเศษใดๆ ปรากฎว่าราคาถูกและร่าเริง แอปพลิเคชันเพียงแค่ต้องบันทึกข้อมูลและดำเนินการด้วยตนเองต่อไป อย่างไรก็ตาม หลังจากที่คอนเทนเนอร์สิ้นสุดลง ข้อมูลที่บันทึกด้วยวิธีง่ายๆ นี้ก็จะหายไปเช่นกัน
มีวิธีอื่นในการจัดเก็บไฟล์ชั่วคราวใน Docker ซึ่งเหมาะสำหรับกรณีที่คุณต้องการประสิทธิภาพในระดับที่สูงกว่าเมื่อเปรียบเทียบกับสิ่งที่ทำได้ด้วยกลไกการจัดเก็บชั่วคราวมาตรฐาน หากคุณไม่ต้องการจัดเก็บข้อมูลของคุณนานกว่าที่มีอยู่ คุณสามารถเชื่อมต่อ tmpfs กับคอนเทนเนอร์ ซึ่งเป็นที่จัดเก็บข้อมูลชั่วคราวที่ใช้ RAM ของโฮสต์ สิ่งนี้จะเร่งความเร็วในการเขียนและอ่านข้อมูล
บ่อยครั้งที่ข้อมูลจำเป็นต้องได้รับการจัดเก็บข้อมูลแม้ว่าคอนเทนเนอร์จะสิ้นสุดลงแล้วก็ตาม เพื่อจุดประสงค์นี้ เราจะต้องมีกลไกสำหรับการจัดเก็บข้อมูลถาวร
การจัดเก็บข้อมูลถาวร
มีสองวิธีในการทำให้อายุการใช้งานของข้อมูลยาวนานกว่าอายุการใช้งานของคอนเทนเนอร์ วิธีหนึ่งคือการใช้เทคโนโลยีการผูกเมานต์ ด้วยวิธีการนี้ คุณสามารถเมานท์ เช่น โฟลเดอร์ในชีวิตจริงเข้ากับคอนเทนเนอร์ได้ กระบวนการที่อยู่นอก Docker จะสามารถทำงานกับข้อมูลที่จัดเก็บไว้ในโฟลเดอร์ดังกล่าวได้ นี่คือวิธีการ
เมานต์ tmpfs และผูกเมานต์
ข้อเสียของการใช้เทคโนโลยี bind mount คือ การใช้งานจะทำให้การสำรองข้อมูล การโยกย้ายข้อมูล และการแบ่งปันข้อมูลระหว่างคอนเทนเนอร์หลายตัวมีความซับซ้อน จะดีกว่ามากถ้าใช้โวลุ่ม Docker สำหรับการจัดเก็บข้อมูลแบบถาวร
วอลุ่มนักเทียบท่า
ไดรฟ์ข้อมูลคือระบบไฟล์ที่อยู่บนเครื่องโฮสต์ภายนอกคอนเทนเนอร์ นักเทียบท่าสร้างและจัดการโวลุ่ม คุณสมบัติหลักของวอลุ่ม Docker มีดังนี้
- เป็นวิธีการจัดเก็บข้อมูลอย่างถาวร
- มีความเป็นอิสระและแยกออกจากภาชนะ
- สามารถใช้ร่วมกันระหว่างคอนเทนเนอร์ต่างๆ
- ช่วยให้คุณสามารถจัดระเบียบการอ่านและการเขียนข้อมูลได้อย่างมีประสิทธิภาพ
- สามารถโฮสต์ไดรฟ์ข้อมูลบนทรัพยากรของผู้ให้บริการคลาวด์ระยะไกลได้
- พวกเขาสามารถเข้ารหัสได้
- พวกเขาสามารถตั้งชื่อได้
- คอนเทนเนอร์สามารถจัดเตรียมปริมาตรเพื่อเติมข้อมูลล่วงหน้าได้
- สะดวกสำหรับการทดสอบ
อย่างที่คุณเห็น Docker Volumes มีคุณสมบัติที่ยอดเยี่ยมบางประการ เรามาพูดถึงวิธีการสร้างมันกันดีกว่า
การสร้างวอลุ่ม
สามารถสร้างวอลุ่มได้โดยใช้ Docker หรือใช้คำขอ API
นี่คือคำสั่ง Dockerfile ที่ให้คุณสร้างโวลุ่มเมื่อคอนเทนเนอร์เริ่มทำงาน
VOLUME /my_volume
เมื่อใช้คำสั่งเช่นนี้ หลังจากสร้างคอนเทนเนอร์แล้ว Docker จะสร้างโวลุ่มที่มีข้อมูลที่มีอยู่แล้วในตำแหน่งที่ระบุ โปรดทราบว่าหากคุณสร้างโวลุ่มโดยใช้ Dockerfile การดำเนินการนี้ไม่ได้ช่วยลดความจำเป็นในการระบุจุดเชื่อมต่อสำหรับโวลุ่ม
คุณยังสามารถสร้างโวลุ่มใน Dockerfile โดยใช้รูปแบบ JSON ได้อีกด้วย
นอกจากนี้ คุณสามารถสร้างไดรฟ์ข้อมูลได้โดยใช้บรรทัดคำสั่งในขณะที่คอนเทนเนอร์กำลังทำงานอยู่
การทำงานกับวอลุ่มจากบรรทัดคำสั่ง
▍การสร้างวอลุ่ม
คุณสามารถสร้างวอลุ่มแบบสแตนด์อโลนได้ด้วยคำสั่งต่อไปนี้:
docker volume create —-name my_volume
▍ค้นหาข้อมูลเกี่ยวกับปริมาณ
หากต้องการดูรายการวอลุ่ม Docker ให้ใช้คำสั่งต่อไปนี้:
docker volume ls
คุณสามารถสำรวจหนังสือเล่มใดเล่มหนึ่งได้ดังนี้:
docker volume inspect my_volume
▍การลบโวลุ่ม
คุณสามารถลบโวลุ่มได้ดังนี้:
docker volume rm my_volume
หากต้องการลบวอลุ่มทั้งหมดที่คอนเทนเนอร์ไม่ได้ใช้ คุณสามารถใช้คำสั่งต่อไปนี้:
docker volume prune
ก่อนที่จะลบโวลุ่ม Docker จะขอให้คุณยืนยันการดำเนินการนี้
หากไดรฟ์ข้อมูลเชื่อมโยงกับคอนเทนเนอร์ ไดรฟ์ข้อมูลนั้นจะไม่สามารถลบได้จนกว่าคอนเทนเนอร์ที่เกี่ยวข้องจะถูกลบ ในเวลาเดียวกันแม้ว่าคอนเทนเนอร์จะถูกลบออกไป แต่นักเทียบท่าก็ไม่เข้าใจสิ่งนี้เสมอไป หากสิ่งนี้เกิดขึ้น คุณสามารถใช้คำสั่งต่อไปนี้:
docker system prune
ได้รับการออกแบบมาเพื่อล้างทรัพยากร Docker หลังจากรันคำสั่งนี้ คุณควรจะสามารถลบโวลุ่มที่มีสถานะถูกกำหนดไว้ก่อนหน้านี้อย่างไม่ถูกต้องได้
--mount และ --volume แฟล็ก
เพื่อทำงานกับวอลุ่มของคุณเมื่อเรียกใช้คำสั่ง docker
คุณมักจะต้องใช้แฟล็ก ตัวอย่างเช่น เพื่อสร้างไดรฟ์ข้อมูลระหว่างการสร้างคอนเทนเนอร์ คุณสามารถใช้โครงสร้างต่อไปนี้:
docker container run --mount source=my_volume, target=/container/path/for/volume my_image
ในสมัยโบราณ (จนถึงปี 2017) ธงนี้ได้รับความนิยม --volume
. เริ่มแรกแฟล็กนี้ (ก็ใช้แบบย่อได้ด้วย แล้วจะมีลักษณะดังนี้) -v
) ใช้สำหรับคอนเทนเนอร์แบบสแตนด์อโลนและแฟล็ก --mount
- ในสภาพแวดล้อม Docker Swarm อย่างไรก็ตาม ณ Docker 17.06 การตั้งค่าสถานะ --mount
สามารถใช้ในสถานการณ์ใดก็ได้
ควรสังเกตว่าเมื่อใช้ธง --mount
จำนวนข้อมูลเพิ่มเติมที่ต้องระบุในคำสั่งเพิ่มขึ้น แต่ด้วยเหตุผลหลายประการ ควรใช้แฟล็กนี้แทน --volume
. ธง --mount
- นี่เป็นกลไกเดียวที่อนุญาตให้คุณทำงานกับบริการหรือระบุพารามิเตอร์ไดรเวอร์ไดรฟ์ข้อมูล นอกจากนี้ แฟล็กนี้ยังใช้งานได้ง่ายกว่าอีกด้วย
ในตัวอย่างคำสั่งที่มีอยู่ซึ่งมุ่งเป้าไปที่การทำงานกับข้อมูลใน Docker คุณสามารถดูตัวอย่างการใช้แฟล็กได้มากมาย -v
. เมื่อพยายามปรับคำสั่งเหล่านี้เพื่อตัวคุณเอง โปรดจำไว้ว่าแฟล็กนั้น --mount
и --volume
ใช้รูปแบบพารามิเตอร์ที่แตกต่างกัน นั่นคือคุณไม่สามารถแทนที่ได้ง่ายๆ -v
บน --mount
และรับทีมงาน
ความแตกต่างที่สำคัญระหว่าง --mount
и --volume
คือเมื่อใช้ธง --volume
พารามิเตอร์ทั้งหมดจะถูกรวบรวมไว้ด้วยกันในฟิลด์เดียวและเมื่อใช้ --mount
พารามิเตอร์จะถูกแยกออกจากกัน
เมื่อได้ร่วมงานกับ --mount
พารามิเตอร์จะแสดงเป็นคู่คีย์-ค่า กล่าวคือ ดูเหมือนว่า key=value
. คู่เหล่านี้คั่นด้วยเครื่องหมายจุลภาค นี่คือตัวเลือกที่ใช้กันทั่วไป --mount
:
type
— ประเภทการติดตั้ง ค่าสำหรับคีย์ที่เกี่ยวข้องสามารถเป็นได้ผูก ,ปริมาณ หรือtmpfs . เรากำลังพูดถึงเล่มที่นี่นั่นคือเราสนใจในความหมายvolume
.source
— เมานต์แหล่งที่มา สำหรับวอลุ่มที่มีชื่อ นี่คือชื่อวอลุ่ม สำหรับวอลุ่มที่ไม่มีชื่อ คีย์นี้ไม่ได้ระบุ ก็สามารถย่อให้สั้นลงได้src
.destination
— เส้นทางที่ไฟล์หรือโฟลเดอร์ถูกเมานต์ในคอนเทนเนอร์ คีย์นี้สามารถย่อให้สั้นลงได้dst
หรือtarget
.readonly
- เม้าท์วอลลุ่มตามที่ตั้งใจไว้สำหรับการอ่านเท่านั้น . คีย์นี้เป็นทางเลือกและไม่มีค่าที่กำหนดไว้
นี่คือตัวอย่างการใช้งาน --mount
ด้วยพารามิเตอร์มากมาย:
docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image
ผลของการ
ต่อไปนี้เป็นคำสั่งที่เป็นประโยชน์บางส่วนที่คุณสามารถใช้ได้เมื่อทำงานกับโวลุ่ม Docker:
docker volume create
docker volume ls
docker volume inspect
docker volume rm
docker volume prune
นี่คือรายการพารามิเตอร์ที่ใช้กันทั่วไปสำหรับ --mount
ใช้งานได้ในคำสั่งเช่น docker run --mount my_options my_image
:
type=volume
source=volume_name
destination=/path/in/container
readonly
ตอนนี้เราได้จบซีรีส์ Docker นี้แล้ว ก็ถึงเวลาที่จะพูดสักสองสามคำเกี่ยวกับจุดที่ผู้เรียน Docker สามารถไปต่อได้
เรียนผู้อ่าน! คุณอยากแนะนำสื่ออะไรเกี่ยวกับ Docker สำหรับผู้เริ่มต้นในการเรียนรู้ เพราะเหตุใด
ที่มา: will.com