‫โอเค มาทำอะไรสนุกๆ กันดีกว่า ในการบรรยายนี้ เราจะพูดถึงความแตกต่างระหว่างรูปภาพและคอนเทนเนอร์อย่างรวดเร็ว
‫จากนั้นเราจะกระโดดลงไปเล่นกับตู้คอนเทนเนอร์
‫เรากำลังจะเริ่ม หยุดและลบมัน
‫และทำหน้าที่ดูแลระบบทั่วไป จากนั้นเราจะตรวจสอบบันทึกของคอนเทนเนอร์และกระบวนการที่ทำงานอยู่ในคอนเทนเนอร์ของเรา
‫ดังนั้น ก่อนที่เราจะเริ่มต้นอย่างรวดเร็ว เป็นการดีที่จะทราบความแตกต่างระหว่างรูปภาพและคอนเทนเนอร์ รูปภาพคือไบนารีและไลบรารีและซอร์สโค้ดที่ประกอบขึ้นเป็นแอปพลิเคชันของคุณ
‫คอนเทนเนอร์เป็นอินสแตนซ์ที่ทำงานอยู่ของอิมเมจนั้น
‫ตอนนี้คุณสามารถมีคอนเทนเนอร์จำนวนมากโดยอิงจากอิมเมจเดียวกัน ในการบรรยายนี้ เราจะใช้เว็บเซิร์ฟเวอร์
‫Open Source Nginx ดังนั้นเราจะเริ่มคอนเทนเนอร์ของเราตามอิมเมจ
‫Nginx นั้น เราได้รับรูปภาพทั้งหมดจากการลงทะเบียน การลงทะเบียนเป็นเหมือน
‫GitHub กับซอร์สโค้ด รีจิสตรีอิมเมจมีไว้สำหรับอิมเมจคอนเทนเนอร์และค่าดีฟอลต์สำหรับ Docker คือ Docker Hub ซึ่งคุณสามารถเช็คเอาท์ได้ที่ฮับ
‫นักเทียบท่า คอม
‫เราจะเล่นเพิ่มเติมในภายหลัง
‫แต่สำหรับตอนนี้ พึงระวังว่าทั้งสองสิ่งนี้ค่อนข้างแตกต่างกัน และในหัวข้อถัดไป
‫เราจะไปที่รูปภาพ
‫แต่สำหรับตอนนี้ เรามาเน้นเรื่องคอนเทนเนอร์กันก่อน
‫ตกลง ตอนนี้เราจะเริ่มคอนเทนเนอร์ใหม่และใช้คำสั่ง Docker เพื่อจัดการคอนเทนเนอร์นั้น
‫คอนเทนเนอร์นักเทียบท่าเรียกใช้เผยแพร่
‫80:80 nginx
‫อย่ากังวลหากคุณไม่รู้ว่าทั้งหมดนั้นหมายถึงอะไร เราจะผ่านมันทั้งหมดภายในหนึ่งนาที
‫ฉันจะกด Enter...
‫สลับไปที่เบราว์เซอร์ของฉันแล้วพิมพ์ localhost
‫เราจะไปที่นั่น.
‫เซิร์ฟเวอร์ Nginx ของเรากำลังรับฟัง ฉันสามารถกดรีเฟรชได้หลายครั้ง และคุณจะเห็นรายการบันทึกที่เกิดขึ้นในบรรทัดคำสั่งของเราที่นี่
‫เมื่อกี้เราทำอะไรลงไป? ในพื้นหลัง เอ็นจิ้น
‫Docker ค้นหารูปภาพที่เรียกว่า nginx และดึงรูปภาพล่าสุดสำหรับ
‫nginx จาก Docker Hub จากนั้นก็เริ่มเป็นกระบวนการใหม่ในคอนเทนเนอร์ใหม่ให้เราใช้
‫ส่วนที่เผยแพร่ของคำสั่งจะเปิดเผยพอร์ต 80 ในพื้นที่ของฉันบนเครื่องในพื้นที่ของฉัน และส่งการรับส่งข้อมูลทั้งหมดจากคำสั่งนั้นไปยังไฟล์เรียกทำงานที่ทำงานอยู่ภายในคอนเทนเนอร์นั้นบนพอร์ต
‫80
‫และเนื่องจาก Nginx เป็นเว็บเซิร์ฟเวอร์ มันจึงจะมีค่าเริ่มต้นเป็นพอร์ต 80 และการรับส่งข้อมูลจะส่งต่อโดยอัตโนมัติผ่านเบราว์เซอร์ของฉันไปยังโฮสต์ในพื้นที่ของฉันและไปยังคอนเทนเนอร์นั้น
‫แต่เราไม่ต้องการให้สิ่งนี้ทำงานเบื้องหน้าเสมอในบรรทัดคำสั่งของเรา
‫ลองกด Control c แล้วฉันจะกดปุ่ม Up Arrow และฉันจะสำรองข้อมูลเล็กน้อยแล้วพิมพ์ detach
‫ตอนนี้ detach บอกให้ Docker เรียกใช้ในพื้นหลัง
‫และเราได้รับรหัสคอนเทนเนอร์เฉพาะของคอนเทนเนอร์ของเราคืน
‫และทุกครั้งที่คุณเรียกใช้คอนเทนเนอร์ใหม่ คุณจะได้รับ ID ใหม่ที่ไม่ซ้ำ
‫ดังนั้นหากเรากลับไปที่เบราว์เซอร์ของเราและกดรีเฟรชสองสามครั้ง คุณจะเห็นว่าเบราว์เซอร์ยังคงทำงานอยู่
‫ลองทำคำสั่งเพื่อแสดงรายการคอนเทนเนอร์ของเรา docker container ls และคุณจะเห็นอันที่ยังคงทำงานอยู่ที่นี่
‫ตรงกับรหัสคอนเทนเนอร์ของคำสั่งที่เราเพิ่งเรียกใช้ คุณจะเห็นคอนเทนเนอร์ยังคงทำงานซึ่งเราเพิ่งเริ่มต้น
‫งั้นเรามาหยุดภาชนะนั้นกันด่วน
‫คอนเทนเนอร์เทียบท่าหยุด จากนั้น ID คอนเทนเนอร์ สำหรับรหัสคอนเทนเนอร์ ฉันต้องพิมพ์ตัวเลขสองสามหลักแรกเท่านั้น
‫เพียงพอที่จะไม่ซ้ำกัน และหยุดมัน
‫ตอนนี้ถ้าฉันทำ docker container ls คุณจะสังเกตเห็นว่าไม่มีอะไรปรากฏขึ้น
‫ดังนั้นคำสั่ง ls จะแสดงเฉพาะคอนเทนเนอร์ที่รันอยู่โดยดีฟอลต์เท่านั้น
‫ถ้าฉันทำ ls -a ฉันจะได้กลับมาสอง ทำไมฉันถึงได้รับสอง?
‫เมื่อเรารันคำสั่งรันคอนเทนเนอร์ docker ในแต่ละครั้ง มันเริ่มต้นคอนเทนเนอร์ใหม่จากอิมเมจ
‫Nginx นั้น คุณจะสังเกตเห็นทางด้านขวาที่นี่ว่ามีชื่อสุ่มเหล่านี้ เราไม่ได้ใช้สิ่งเหล่านี้
‫เราได้รับสิ่งเหล่านี้ได้อย่างไร
‫ดังนั้นรหัสคอนเทนเนอร์จึงถูกสร้างขึ้นสำหรับเราเสมอ
‫และชื่อต้องไม่ซ้ำกัน
‫และถ้าเราไม่ระบุ มันจะถูกสร้างขึ้นสำหรับเรา เราสามารถตั้งชื่อตัวเองได้เสมอ แต่ถ้าปล่อยให้มันเลือกเอง
‫อันที่จริงแล้วเรื่องราวเล็กๆ น้อยๆ ที่น่าสนใจรอบๆ Docker ก็คือพวกเขามีชื่อนี้มาหลายปีแล้ว
‫ซึ่งชื่อนั้นจะถูกสร้างแบบสุ่มจากรายการโอเพ่นซอร์สของคำคุณศัพท์ และนามสกุลของแฮกเกอร์หรือนักวิทยาศาสตร์ที่มีชื่อเสียง
‫และมันค่อนข้างตลกในบางครั้ง คุณจะได้ชื่อแปลก ๆ ในนั้น
‫เลยมาสร้างใหม่กัน รันคอนเทนเนอร์ของนักเทียบท่า ใส่ในการเผยแพร่และแยกของเรา
‫แต่คราวนี้เราจะระบุชื่อ ฉันจะเรียกมันว่าเว็บโฮสต์ nginx
‫และตอนนี้ถ้าฉันทำ docker container ls -a คุณจะเห็นคอนเทนเนอร์สามตัว
‫ที่เราเพิ่งเริ่มต้น มันมีชื่อเว็บโฮสต์ ตามด้วยสองอันที่เราเคยเริ่มแล้วหยุดไป
‫เนื่องจากเราไม่ได้ใช้งานสิ่งนี้ในเบื้องหน้าอีกต่อไป เราจึงไม่เห็นบันทึก
‫กลับไปที่เบราว์เซอร์ของเราแล้วฉันจะกดรีเฟรชสองสามครั้งเพื่อสร้างบันทึก
‫จากนั้นกลับไปที่เทอร์มินัลของเราแล้วฉันจะทำ docker container logs webhost และจะคายบันทึกล่าสุดในโฮสต์เว็บ
‫มีตัวเลือกสองสามตัวที่คุณต้องการลองใช้บนคำสั่ง logs เพื่อให้มันติดตามบันทึกโดยอัตโนมัติ หรือมันสามารถจับภาพเหตุการณ์บันทึกล่าสุดสองสามรายการ
‫เพื่อที่คุณจะได้ไม่ต้องลงเอยด้วยไฟล์บันทึกทั้งหมดที่ถูกทิ้งไปที่หน้าจอของคุณ .
‫นอกจากนี้เรายังสามารถใช้คำสั่งคอนเทนเนอร์นักเทียบท่าอื่นเพื่อตรวจสอบคอนเทนเนอร์ที่ทำงานอยู่นั้น เราสามารถลองเทียบท่าตู้คอนเทนเนอร์ด้านบนได้
‫คุณสามารถดูความช่วยเหลือได้ที่นั่น
‫ที่ทำให้เรารู้ว่าเราต้องระบุชื่อคอนเทนเนอร์เว็บโฮสต์ คุณจะเห็นว่านี่เป็นกระบวนการที่ทำงานอยู่ภายในคอนเทนเนอร์
‫ตอนนี้สำหรับ Nginx เราไม่จำเป็นต้องรู้ทั้งหมดนี้ แต่เป็นเรื่องที่น่าสนใจที่จะสังเกตว่าใน
‫Nginx มีกระบวนการหลักจริงๆ แล้วจึงวางไข่กระบวนการของผู้ปฏิบัติงานตามการกำหนดค่า
‫อีกครั้ง เราสามารถพิมพ์ docker container และ --help เพื่อรับรายการคำสั่งทั้งหมดที่เราสามารถลองใช้บนคอนเทนเนอร์นั้นได้
‫ตอนนี้เรามาทำความสะอาดสิ่งที่เราเพิ่งทำกัน
‫ลองทำ Docker container กัน
‫ls -a และนั่นจะแสดงรายการคอนเทนเนอร์ทั้งสามของฉัน
‫ตอนนี้ ผมจะลบทั้งสามอย่างพร้อมกัน
‫บางครั้งคำสั่งย่อยของ Docker สามารถรับค่าได้หลายค่า
‫ดังนั้นในกรณีนี้ ฉันสามารถทำ docker container rm ได้ จากนั้นฉันสามารถระบุ 63f 690 และ ode ได้
‫อุ้ย 0de
‫ดังนั้นฉันจึงได้รับข้อผิดพลาด เกิดอะไรขึ้นที่นี่?
‫ไม่เป็นไร. สองคนแรกถูกลบอย่างปลอดภัย
‫อันที่สามมันบอกฉันว่าฉันไม่สามารถถอดคอนเทนเนอร์ที่ทำงานอยู่ออกได้เพราะเป็นมาตรการด้านความปลอดภัย
‫ทำให้แน่ใจว่าคุณไม่ได้ลบกระบวนการจริงที่ยังคงทำงานอยู่โดยไม่ได้ตั้งใจ หากคุณทำคอนเทนเนอร์นักเทียบท่า ls
‫คุณจะเห็นว่าเรายังมีอีกอันที่ทำงานอยู่
‫ตอนนี้ฉันสามารถหยุดคอนเทนเนอร์นักเทียบท่าเพื่อหยุดมันก่อนแล้วจึงนำออก
‫แต่จริงๆ แล้วฉันกำลังจะทำ docker container rm -f for force และ 63f และเราไปที่นั่น
‫ตอนนี้ถ้าฉันทำ docker container ls -a คุณจะเห็นว่าไม่มีอะไรอยู่ที่นั่น
‫ดังนั้นตอนนี้เราได้ทำความสะอาดระเบียบของเราแล้ว
‫ตกลง.
‫ดังนั้นในเวลาเพียงไม่กี่นาที เราจึงสามารถใช้คำสั่งเดียวในการดาวน์โหลดและเรียกใช้เว็บเซิร์ฟเวอร์
‫Nginx ด้วยการกำหนดค่าเริ่มต้นที่รับฟังบนพอร์ต 80 จากนั้นเราก็สามารถสร้างคำสั่งเหล่านี้ได้หลายคำสั่ง
‫เล่นกับบันทึก จากนั้นจึงลบ ภาชนะเพื่อล้างสิ่งที่เราทำ