การเรียนรู้ Docker ตอนที่ 6: การทำงานกับข้อมูล

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

ส่วนที่ 1: พื้นฐาน
ส่วนที่ 2: ข้อกำหนดและแนวคิด
ส่วนที่ 3: Dockerfiles
ส่วนที่ 4: การลดขนาดภาพและเร่งการสร้าง
ส่วนที่ 5: คำสั่ง
ส่วนที่ 6: การทำงานกับข้อมูล

การเรียนรู้ Docker ตอนที่ 6: การทำงานกับข้อมูล

โปรดทราบว่าเนื้อหานี้จัดทำขึ้นโดยใช้กลไก Docker เวอร์ชัน 18.09.1 ​​​​และเวอร์ชัน API 1.39.

ข้อมูลใน Docker สามารถจัดเก็บได้ชั่วคราวหรือถาวร เริ่มต้นด้วยข้อมูลเวลา

การจัดเก็บข้อมูลชั่วคราว

ในคอนเทนเนอร์ Docker คุณสามารถจัดระเบียบงานด้วยข้อมูลชั่วคราวได้สองวิธี

ตามค่าเริ่มต้น ไฟล์ที่สร้างโดยแอปพลิเคชันที่ทำงานในคอนเทนเนอร์จะถูกจัดเก็บไว้ในเลเยอร์ที่เขียนได้ของคอนเทนเนอร์ เพื่อให้กลไกนี้ทำงานได้ ไม่จำเป็นต้องกำหนดค่าพิเศษใดๆ ปรากฎว่าราคาถูกและร่าเริง แอปพลิเคชันเพียงแค่ต้องบันทึกข้อมูลและดำเนินการด้วยตนเองต่อไป อย่างไรก็ตาม หลังจากที่คอนเทนเนอร์สิ้นสุดลง ข้อมูลที่บันทึกด้วยวิธีง่ายๆ นี้ก็จะหายไปเช่นกัน

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

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

การจัดเก็บข้อมูลถาวร

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

การเรียนรู้ Docker ตอนที่ 6: การทำงานกับข้อมูล
เมานต์ 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 ที่นี่ หนังสือเกี่ยวกับ Docker (เมื่อซื้อหนังสือเล่มนี้ ให้ลองซื้อฉบับล่าสุด) ที่นี่ หนังสืออีกเล่มที่เหมาะกับผู้ที่เชื่อว่าการฝึกฝนเป็นวิธีที่ดีที่สุดในการเรียนรู้เทคโนโลยี

เรียนผู้อ่าน! คุณอยากแนะนำสื่ออะไรเกี่ยวกับ Docker สำหรับผู้เริ่มต้นในการเรียนรู้ เพราะเหตุใด

การเรียนรู้ Docker ตอนที่ 6: การทำงานกับข้อมูล

ที่มา: will.com

เพิ่มความคิดเห็น