‫เอาล่ะ เล่มดูเหมือนเรียบง่าย แต่จริง ๆ แล้วมีหลายอย่าง
‫วิธีแรกที่คุณสามารถบอกคอนเทนเนอร์ได้ว่ามันจำเป็นต้องกังวลเกี่ยวกับปริมาณที่อยู่ใน Dockerfile
‫ลองตรวจสอบบางส่วน
‫ฉันแค่จะทำสิ่งที่ฉันทำมาก
‫ฉันจะค้นหา MySQL
‫นี่คือวิธีที่ฉันได้เรียนรู้มากมายเกี่ยวกับ Dockerfiles
‫และวิธีการใช้อย่างถูกต้องเป็นที่เก็บข้อมูลอย่างเป็นทางการมีค่าเริ่มต้นที่ดีและแนวทางปฏิบัติที่ดีที่สุด
‫เมื่อฉันไปที่นี่เพื่อ MySQL ฉันจะคลิกที่ Dockerfile ล่าสุดที่นี่
‫ฉันพนันว่าคุณเพราะมันเป็นฐานข้อมูลมันอาจมีคำสั่งระดับเสียงอยู่
‫เราจะไปที่นั่น.
‫นี่คือตำแหน่งเริ่มต้นของฐานข้อมูล MySQL
‫อิมเมจนี้ถูกโปรแกรมในลักษณะที่จะบอกนักเทียบท่าว่าเมื่อเราเริ่มต้นคอนเทนเนอร์ใหม่จากมันเพื่อสร้างตำแหน่งวอลุ่มใหม่และกำหนดให้กับไดเร็กทอรีนี้ในคอนเทนเนอร์
‫ซึ่งหมายความว่าไฟล์ใด ๆ ที่เราใส่เข้าไปในนั้นจะอยู่ได้นานกว่าคอนเทนเนอร์จนกว่าเราจะลบโวลุ่มด้วยตนเอง
‫และนั่นคือสิ่งที่เราควรชี้ให้เห็นตรงนี้คือปริมาณต้องการลบด้วยตนเอง
‫คุณไม่สามารถทำความสะอาดได้เพียงแค่เอาภาชนะออก
‫มันเป็นขั้นตอนพิเศษ
‫นั่นเป็นเพียงการประกันจริงๆแล้วเพราะจุดรวมของคำสั่งปริมาณคือการบอกว่าข้อมูลนี้มีความสำคัญเป็นพิเศษอย่างน้อยก็สำคัญกว่าตัวคอนเทนเนอร์เอง
‫ถ้าเราดึงนักเทียบท่าบน
‫MySQL และจากนั้นฉันจะทำการตรวจสอบรูปภาพนักเทียบท่าบน MySQL เราจะไม่เห็น
‫Dockerfile เพราะไฟล์นักเทียบท่าไม่ได้เป็นส่วนหนึ่งของข้อมูลเมตาของรูปภาพซึ่งคุณจะสังเกตเห็นในเรื่องนี้ พื้นที่ config ที่มันระบุปริมาณนั้น
‫ฉันสามารถบอกได้เสมอว่าการกำหนดค่าที่มาจาก Dockerfile เมื่อมันถูกสร้างขึ้นกำหนดปริมาณให้กับเส้นทางนั้น
‫ลองเรียกใช้คอนเทนเนอร์จากมัน
‫ดังนั้นนักเทียบท่าตู้คอนเทนเนอร์เรียกใช้ -d - ชื่อ mysql
‫ถ้าคุณจำจากก่อนหน้านี้หนึ่ง MySQL เป็นพิเศษเล็กน้อย
‫ตอนนี้ต้องการตัวแปรสภาพแวดล้อมก่อนที่มันจะทำงาน
‫มันคือ MYSQL_ALLOW_EMPTY_PASSWORD
‫ตกลง.
‫สิ่งที่คุณเห็นคือ MySQL กำลังทำงาน
‫ถ้าเราทำท่าเทียบเรือตรวจสอบ mysql เราควรเห็นสิ่งเดียวกันกับที่มันบอกเราในการตั้งค่าว่ามีโวลุ่ม
‫ที่นี่
‫เราสามารถเห็นมันได้ที่นี่ภายใต้ภูเขา สิ่งนี้คือนี่เป็นภาชนะที่ใช้งานจริงที่ได้รับตำแหน่งที่เป็นเอกลักษณ์ของตัวเองบนโฮสต์เพื่อจัดเก็บข้อมูลนั้นและจากนั้นในพื้นหลังแมปหรือเมาต์ไปยังตำแหน่งนั้นในคอนเทนเนอร์เพื่อให้ตำแหน่งในคอนเทนเนอร์นั้น
‫ที่จริงแค่คิดว่ามันเขียนถึง / var /
‫lib / mysql
‫ในกรณีนี้เราจะเห็นว่าข้อมูลนั้นอาศัยอยู่ในสถานที่จริงบนโฮสต์
‫ลองทำปริมาตรตัวเทียบท่ากันแล้วเราจะเห็นว่าตอนนี้เรามีหนึ่งโวลุ่ม
‫ตอนนี้เราสังเกตเห็นว่ามันมีรหัสเฉพาะที่เราจะไม่มีทางรู้ว่าสิ่งที่เกิดขึ้นนั้นเป็นอย่างไร
‫ดังนั้นเรามาตรวจสอบกันก่อน
‫คุณไม่จำเป็นต้องพิมพ์ทุกอย่างออกมา
‫คุณสามารถพิมพ์อักขระสองสามตัวแรกแล้วกด Tab เพื่อทำให้เสร็จสมบูรณ์
‫คุณจะได้รับข้อมูลที่คล้ายกันเกี่ยวกับระดับเสียง
‫หากคุณกำลังทำสิ่งนี้กับเครื่อง Linux คุณสามารถนำทางไปยังตำแหน่งนั้นบนฮาร์ดไดรฟ์และดูข้อมูล
‫จริงๆแล้วจะมีฐานข้อมูลบางส่วนที่นั่น
‫หากคุณใช้ Mac หรือ Windows โปรดจำไว้ว่า Docker สำหรับ
‫Windows และ Docker สำหรับ Mac กำลังทำพื้นหลังเล็กน้อยซึ่งซ่อนอยู่จากเราซึ่งมันสร้าง Linux VM ขึ้นมา
‫ดังนั้นข้อมูลนี้เป็นเทคนิคใน Linux VM นั้น คุณจะไม่สามารถไปยังเส้นทางนั้นบนเครื่อง Windows หรือ
‫Mac ของคุณและดูข้อมูลได้ เป็นจริงภายใน VM นั้น
‫เราจะเห็นทีละน้อยด้วยโวลุ่มที่เมาท์วิธีที่เราสามารถแก้ไขข้อ จำกัด นั้นได้เช่นกัน
‫เมื่อดูที่นี้คุณจะสังเกตเห็นว่าผู้ใช้ไม่ค่อยเป็นมิตรในแง่ของการบอกเราว่ามีอะไรอยู่ในนั้นหรืออะไรที่กำหนดให้กับไดรฟ์ข้อมูลนี้
‫เราสามารถเห็นได้จากมุมมองของคอนเทนเนอร์ที่ใช้ปริมาตร แต่เราไม่สามารถเห็นได้จากมุมมองปริมาณที่เชื่อมต่อ
‫ขวา?
‫ถ้าฉันเพียงกดลูกศรขึ้นแล้วมาดูกันสร้าง mysql2
‫ตอนนี้สร้างเซิร์ฟเวอร์ MySQL ตัวอื่นที่ทำงานในพื้นหลังแล้ว
‫ถ้าฉันทำปริมาณนักเทียบท่าอีก ls คุณจะเห็นสองของพวกเขา
‫คุณเริ่มเห็นปัญหาใช่มั้ย
‫ไม่มีวิธีง่ายๆที่นี่จริง ๆ ที่จะบอกจากที่อื่น
‫หากเราเพียงเพื่อพิสูจน์จุดทำ docker container stop mysql และ docker container stop
‫mysql2
‫เราทำคอนเทนเนอร์นักเทียบท่า ls เราจะไม่เห็นคอนเทนเนอร์ใด ๆ ที่ทำงานอยู่ หากเราทำ ls-a
‫เราจะได้เห็นพวกเขาทั้งหมด และสังเกตว่าพวกเขาหยุด แล้วเราก็ทำโวลุ่มนักเทียบท่า ls
‫คุณสังเกตเห็นว่าเรายังมีสองโวลุ่ม
‫ถ้าฉันทำ docker container rm mysql แล้ว mysql2
‫เพราะฉันสามารถทำได้ทั้งสองอย่างในคำสั่งเดียวมันจะลบทั้งสอง container ถ้าตอนนี้ฉันทำโวลุ่มนักเทียบท่า ls, โวลุ่มของฉันยังอยู่ที่นั่น
‫ข้อมูลของฉันยังปลอดภัย
‫ดังนั้นเราจึงแก้ไขปัญหาหนึ่งข้อ
‫ฐานข้อมูลมีอายุการใช้งานที่ยาวนานกว่า
‫เราจะทำให้ผู้ใช้เป็นมิตรได้มากขึ้นได้อย่างไร
‫นั่นคือสิ่งที่ปริมาณที่มีชื่อเข้ามาและความสามารถในการระบุสิ่งต่าง ๆ ในคำสั่งเรียกใช้นักเทียบท่า
‫ถ้าฉันกดลูกศรขึ้นสองสามครั้งจนกว่าฉันจะไปที่ตู้เทียบท่าวิ่งมันไม่สำคัญเลยว่าคุณจะวิ่งอีกครั้ง
‫ในกรณีนี้เราจะโยนคำสั่ง -v A
‫-v ช่วยให้เราสามารถระบุไดรฟ์ข้อมูลใหม่ที่เราต้องการสร้างสำหรับคอนเทนเนอร์นี้ที่จะทำงานหรือมันช่วยให้เราสองตัวเลือกอื่น ๆ
‫หนึ่งในนั้นที่นี่คือการสร้างไดรฟ์ที่มีชื่อ
‫หากฉันเพิ่งทำ -v แล้ว var lib mysql ที่จะทำสิ่งเดียวกันคือสิ่งที่คำสั่งไดรฟ์ข้อมูลของเราใน
‫Dockerfile ทำ
‫เราไม่จำเป็นต้องทำเช่นนี้ที่นี่ แต่สิ่งที่เราทำได้คือฉันสามารถใส่ชื่อต่อหน้ามันด้วยเครื่องหมายโคลอน
‫เรียกว่า "โวลุ่มที่มีชื่อ
‫"เมื่อฉันทำเช่นนั้นและทำโวลุ่มนักเทียบท่าคุณจะเห็นว่าคอนเทนเนอร์ใหม่ของฉันกำลังใช้วอลลุ่มใหม่
‫หากเราทำการตรวจสอบโวลเดอร์ด้วยวอลล์เปเปอร์คุณจะเห็นว่าใช้งานได้ง่ายกว่า
‫ถ้าฉันลบที่เก็บของฉันอีกครั้งและเราต้องใส่ -f
‫เพราะมันยังทำงานอยู่และจากนั้นฉันก็เรียกใช้อีกอัน และครั้งนี้ฉันจะให้ชื่ออื่น
‫จากนั้นเราก็เพิ่มปริมาณนักเทียบท่าอีกครั้งคุณจะเห็นว่ามันดูเหมือนว่าเรายังไม่ได้สร้างโวลุ่มใหม่ มันยังคงใช้โวลุ่มเดียวกัน
‫มาทำภาชนะเทียบท่าตรวจสอบที่ mysql3 จากนั้นสิ่งที่เราจะเห็นที่นี่คือใช่นี่คือสิ่งที่ถูกกำหนดค่า แต่เรากำลังทำงานอะไร
‫นี่คือภูเขาของเราที่นี่
‫เราจะเห็นที่นี่ว่าไม่เพียง แต่จะเป็นชื่อที่เป็นมิตรกว่า แต่มันก็เปลี่ยนที่มาของแหล่งข้อมูลให้เป็นมิตรขึ้นเล็กน้อยเช่นกัน
‫สำหรับฉันคำแนะนำเล็กน้อยที่นี่คือเมื่อฉันทำงานเป็นเวลาหลายวันหรือหลายสัปดาห์ฐานข้อมูลเฉพาะในภาชนะเฉพาะที่ฉันต้องใช้ซ้ำไปเรื่อย ๆ และฉันไม่ต้องการเซิร์ฟเวอร์ฐานข้อมูลเปล่าฉัน
‫ฉันจะสร้างภาชนะของฉันด้วยวิธีนี้และตั้งชื่อให้กับโครงการเพื่อที่ฉันจะได้ทราบว่าหนังสือเล่มนั้นมีไว้สำหรับอะไร
‫สิ่งสุดท้ายที่นี่
‫ทำไมคุณต้องการที่จะสร้างปริมาณนักเทียบท่า?
‫หากเราสามารถสร้างพวกเขาจากคำสั่งเรียกใช้นักเทียบท่าที่รันไทม์และเราสามารถสร้างพวกมันได้โดยการระบุพวกมันใน Dockerfile มีเพียงไม่กี่กรณีที่คุณต้องการสร้างมันล่วงหน้า
‫และคุณสามารถหาคำตอบได้อย่างรวดเร็วโดยใช้คำสั่ง help
‫เพราะนี่เป็นวิธีเดียวที่เราสามารถระบุไดรเวอร์ที่แตกต่างได้
‫จำสิ่งที่ปลั๊กอินที่ฉันจะพูดถึงในภายหลังหรือไม่
‫จากนั้นตัวเลือกไดรเวอร์ใด ๆ ที่เราต้องการใช้ -o
‫ถ้าเราต้องการใส่ป้ายกำกับเราจะพูดถึงในส่วนการผลิตด้วย
‫บางครั้งในกรณีพิเศษคุณจำเป็นต้องสร้างไดรฟ์ข้อมูล Docker ล่วงหน้า แต่โดยปกติแล้วจะใช้เพื่อการพัฒนาในท้องถิ่นของคุณเพียงแค่ระบุไว้ใน Dockerfile
‫หรือที่คำสั่ง run