‫ข้อกำหนดสำหรับการบรรยายนี้รวมถึงการรู้พื้นฐานเกี่ยวกับสิ่งที่คอนเทนเนอร์และรูปภาพอยู่ใน Docker และทำความเข้าใจกับเลเยอร์
‫รู้บางสิ่งเกี่ยวกับ Docker Hub
‫การบรรยายครั้งนี้จะเกี่ยวกับแท็กรูปภาพและวิธีอัปโหลดไปยัง Docker Hub
‫จริงๆแล้วมีแท็กเยอะเพราะมันไม่ง่ายเท่าที่คุณคิดเมื่อคุณเริ่มใช้มัน
‫พวกเขาจำเป็นต้องอยู่ในรูปแบบเฉพาะเพื่อทำงานกับรีจิสทรีโดยเฉพาะกับ Docker Hub
‫จากนั้นฉันจะพูดคุยกับคุณเกี่ยวกับความสัมพันธ์ระหว่างแท็กที่กำหนดให้กับภาพของคุณและรหัสของภาพเหล่านั้น
‫ดังนั้นเรามาเริ่มกันเลย
‫ก่อนอื่นเรามาพูดถึงการติดแท็กกัน แท็กภาพนักเทียบท่า - ช่วยเหลือ ภาพไม่มีชื่อทางเทคนิคแม้ว่าเราจะอ้างถึงพวกเขาเช่นนั้นเมื่อเราพูดอย่างไม่เป็นทางการ
‫หากเราทำรูปภาพนักเทียบท่า ls คุณสังเกตเห็นว่าไม่มีคอลัมน์ชื่อ
‫นอกจากรหัสภาพแล้วไม่มีใครในพวกเราที่จะจำความถูกต้องเหล่านั้นได้?
‫เราต้องอ้างถึงพวกเขาด้วยข้อมูลสามส่วนที่แตกต่างกัน
‫บนหน้าจอนี้สำหรับคำสั่งอิมเมจ ls เราเห็นเพียงสองอันเท่านั้น ด้านซ้ายเราเห็นที่เก็บแล้วเราจะเห็นแท็ก
‫พื้นที่เก็บข้อมูลประกอบด้วยชื่อผู้ใช้หรือองค์กรทับพื้นที่เก็บข้อมูล
‫ที่นี่เราจะจัดการกับอิมเมจที่เก็บอย่างเป็นทางการเท่านั้นดังนั้นเราจะเห็นชื่อที่เก็บจริงเท่านั้น
‫เรากล่าวถึงก่อนหน้านี้ว่ารูปภาพพิเศษที่ถือว่าเป็นทางการเป็นภาพเดียวที่ได้รับสิทธิ์ในการเรียกชื่อของที่เก็บไม่ใช่ชื่อจริงของที่เก็บสแลชขององค์กร
‫แต่ถ้าเราไปที่ Docker Hub และฉันแค่ทำการค้นหาบน mysql
‫เราจะพบว่ามีองค์กรจริงๆไม่ใช่แค่เป็น mysql อย่างเป็นทางการเท่านั้นซึ่งเรียกว่า mysql
‫แต่มีองค์กร SQL ที่มี เซิร์ฟเวอร์ mysql
‫ซึ่งดูเหมือนว่าจะได้รับความนิยมเป็นอย่างดีและมีการดาวน์โหลดมากกว่าล้านครั้ง ดูเหมือนว่ามันคืออะไรที่นี่เป็นจริงแล้วเป็นเซิร์ฟเวอร์ MySQL
‫ตัวเดียวกัน แต่สร้างขึ้นโดยทีมงาน MySQL ของ Oracle
‫ถ้าฉันต้องการดาวน์โหลดคุณจะสังเกตเห็นได้ที่นี่ทางด้านขวาฉันต้องทำการดึงนักเทียบท่า
‫mysql / mysql-server
‫ฉันสามารถคลิกปุ่มคัดลอกและคัดลอกสิ่งนี้ได้ มันจะดาวน์โหลดอิมเมจที่ใช้เฉพาะองค์กรและถ้าฉันทำอิมเมจ
‫docker อีกครั้งคุณจะสังเกตเห็นว่าชื่อที่เก็บนั้นมีชื่อองค์กร
‫ในบัญชีของฉันที่ Docker Hub ฉันรู้จักกันในชื่อ bretfisher คุณสามารถดูได้จากด้านบนขวา
‫ดังนั้นถ้าฉันดูแดชบอร์ดของฉันและดูรูปภาพของฉันที่ฉันเป็นแบบสาธารณะลองดูที่
‫หากคุณจะดาวน์โหลดนี้ฉันจะต้องทำนักเทียบท่า
‫pull bretfisher / nodemongoapp
‫ตอนนี้เราเข้าใจแล้วว่าพื้นที่เก็บข้อมูลชื่อแท็กคืออะไร
‫แท็กไม่ใช่รุ่นและไม่ใช่สาขา แต่เป็นแท็ก Git
‫ดังนั้นมันจึงเป็นทั้งสองอย่างเล็กน้อย
‫มันเป็นเพียงตัวชี้ไปยังรูปภาพที่เจาะจงและอาจเป็นอะไรก็ได้ในที่เก็บข้อมูลนั้น
‫ถ้าเรากลับไปที่ Docker Hub สักครู่และเราขึ้นไปที่รูปภาพอย่างเป็นทางการของ mysql คุณจะเห็นหน้าแรกมีแท็กต่าง
‫ๆ สิ่งที่พวกเขากำลังพยายามจะพูดที่นี่คือ 8 0 0
‫และ 8 0 และ 8 คือแท็กทั้งหมดสำหรับรหัสรูปภาพเดียวกัน
‫ถ้าฉันเลื่อนขึ้นที่นี่และดูที่ปุ่มแท็กฉันจะได้รับรายละเอียดทั้งหมดของแท็กต่างๆที่พวกเขาได้มอบให้กับ mysql
‫งั้นลองไปที่ Nginx ซึ่งเป็นสิ่งที่เราได้ทำมามากมาย
‫เราจะเห็นว่าที่นี่ไม่ใช่แค่ตัวเลข แต่เป็นชื่อจริง
‫สิ่งสำคัญคือต้องชี้ให้เห็นว่าสิ่งเหล่านี้ล้วนเป็นภาพที่เหมือนกันทั้งหมดและ Docker
‫ฉลาดพอที่จะรู้ ฉันไปที่บรรทัดคำสั่งของฉันและฉันเห็นว่าฉันได้ดาวน์โหลด nginx ล่าสุดแล้ว
‫ถ้าฉันดูที่หน้าเว็บฉันจะเห็นแท็กล่าสุดตรงนี้ แต่มันก็เรียกว่า mainline
‫แล้วถ้าฉันทำนักเทียบท่าดึง nginx: mainline ล่ะ? สิ่งนี้บอกเราว่าจริง ๆ
‫แล้วรู้แล้วว่าตามรหัสรูปภาพรูปภาพนี้มีอยู่แล้วในแคชของฉัน ตอนนี้ถ้าฉันทำภาพนักเทียบท่า ls
‫อีกครั้งฉันจะเห็นสอง nginx ที่แตกต่างกัน คุณจะสังเกตเห็นว่าพวกเขามีรหัสรูปภาพที่แน่นอนเพราะพวกเขาไม่ได้ถูกเก็บไว้ในแคชสองเท่าและอีกครั้งสิ่งนี้กลับไปสู่การประหยัดจำนวนมาก
‫แท็กเหล่านี้เป็นเพียงป้ายกำกับที่ชี้ไปยังรหัสรูปภาพจริงและเราสามารถมีแท็กเหล่านี้จำนวนมากชี้ไปที่แท็กเดียวกัน
‫ดังนั้นฉันจะสร้างป้ายกำกับใหม่ได้อย่างไร
‫ดีฉันสามารถสร้าง Dockerfile ของตัวเองและสร้างภาพที่กำหนดเองของฉันเอง
‫แต่เราสามารถติดแท็กรูปภาพ Docker
‫ที่มีอยู่อีกครั้งเพื่อให้ฉันสามารถทำแท็กรูปภาพนักเทียบท่าได้
‫รูปแบบของคำสั่งนี้คือภาพที่ฉันจะให้แท็กใหม่ก่อนแล้วจากนั้นแท็กใหม่ที่ฉันต้องการให้มัน
‫ถ้าฉันทำแท็กรูปภาพนักเทียบท่า - ช่วยอีกครั้งเพื่อรีเฟรชหน่วยความจำของคุณมันจะแสดง SOURCE_IMAGE และแท็กทางเลือกจากนั้น
‫NEW_IMAGE แท็กตัวเลือก
‫ดังนั้นหากคุณไม่ได้ระบุแท็กแท็กนั้นจะเป็นค่าเริ่มต้นล่าสุดเสมอ
‫ล่าสุดไม่ได้หมายความว่าเป็นรุ่นล่าสุดเสมอไปเพราะฉันสามารถใช้ซอฟต์แวร์เก่าและติดแท็กเป็นซอฟต์แวร์ล่าสุดได้
‫ไม่มีอะไรพิเศษเกี่ยวกับมัน แต่มันเป็นแค่ค่าเริ่มต้น
‫จริงๆฉันหวังว่าพวกเขาจะเรียกมันว่าเริ่มต้นและไม่ล่าสุด
‫มันค่อนข้างสับสนเล็กน้อย แต่โดยทั่วไปแล้วบน Docker
‫Hub โดยเฉพาะอย่างยิ่งเมื่อคุณใช้รูปภาพอย่างเป็นทางการคุณสามารถวางใจได้ว่าโดยทั่วไปแล้วซอฟต์แวร์รุ่นล่าสุดที่เสถียรที่สุดที่คุณต้องการ
‫งั้นลองทำภาพนักเทียบท่ากันอีกครั้ง
‫สังเกตสิ่งที่เกิดขึ้น
‫ฉันได้เพิ่มแท็กใหม่ให้กับภาพที่ฉันไม่ได้ทำ
‫มันแสดงรหัสรูปภาพเดียวกันและตอนนี้มันมีป้ายชื่อผู้ใช้ของฉันและ
‫repo ใหม่ที่ยังไม่มีใน Docker Hub
‫ถ้าเราไปดูแผงควบคุมของฉันฉันไม่มีสิ่งที่เรียกว่า
‫bretfisher / nginx
‫แล้วถ้าฉันเป็นนักเทียบท่าอิมเมจดันคล้ายกับ Git push, bretfisher / nginx?
‫ปฏิเสธแล้ว: การเข้าถึงทรัพยากรที่ร้องขอถูกปฏิเสธ
‫ดังนั้นจึงพยายามอัปโหลดสิ่งที่ฉันเพิ่งสร้างอย่างชัดเจนพยายามอัปโหลดแท็กนั้น แต่ให้สิทธิ์การเข้าถึงแก่ฉันที่ถูกปฏิเสธ
‫นั่นเป็นเพราะฉันไม่ได้เข้าสู่ระบบจริง
‫ดังนั้นถ้าคุณดูนักเทียบท่า - ช่วยคุณจะเห็นคำสั่งเข้าสู่ระบบและออกจากระบบ เรายังไม่ได้ใช้
‫ดังนั้นเมื่อคุณมีบัญชี Docker Hub ของคุณเองคุณสามารถเข้าสู่ระบบได้จากการเข้าสู่ระบบของนักสั่งบรรทัดคำสั่ง
‫ดังนั้นสิ่งนี้จริง ๆ แล้วมีสิ่งนี้ถูกเขียนไปยังแฟ้มที่โดยค่าเริ่มต้นอยู่ในโปรไฟล์ของฉันภายใต้ cat นักเทียบท่า / config json
‫และจริง ๆ แล้วมันเก็บคีย์การรับรองความถูกต้องที่จะอนุญาตให้นักเทียบท่าในประเทศของฉัน CLI เข้าถึง Docker Hub อย่างฉัน
‫นี่คือจุดสำคัญที่เราจะเรียนรู้ในภายหลังในการผลิตคือทุกที่ที่คุณลงชื่อเข้าใช้ด้วย
‫Docker CLI โดยค่าเริ่มต้นมันจะเก็บรหัสรับรองความถูกต้องนี้สำหรับบัญชีของคุณในโปรไฟล์ของผู้ใช้นั้น
‫ดังนั้นจงระวังให้ดี
‫หากคุณกำลังใช้เครื่องที่คุณไม่ไว้วางใจเมื่อคุณทำเสร็จแล้วให้พิมพ์ logout
‫ดังนั้นเมื่อเราเข้าสู่ระบบแล้วฉันจะกดลูกศรขึ้นเพื่อลองผลักภาพนั้นอีกครั้ง
‫ตกลง.
‫ดูเหมือนว่ามันจะเสร็จแล้ว
‫ไปที่ Docker Hub แล้วไปรีเฟรช นั่นคือ
‫bretfisher / nginx อีกครั้งฉันไม่จำเป็นต้องสร้างสิ่งนี้ตั้งแต่เริ่มต้นเพื่ออัปโหลด
‫ฉันเพิ่งให้แท็กใหม่ให้กับภาพที่มีอยู่และเมื่อฉันอัพโหลดมันมันจะสร้าง repo ใหม่โดยอัตโนมัติตามแท็กนั้น
‫แน่นอนฉันสามารถกรอกข้อมูลทั้งหมดที่นี่และคุณจะเห็นว่ามันเป็นค่าเริ่มต้นเป็นชื่อแท็กล่าสุดเพราะฉันไม่ได้ระบุ
‫ดังนั้นฉันสามารถย้อนกลับไปทำสิ่งลูกศรขึ้นได้จนกว่าฉันจะไปที่แท็กของฉันและฉันสามารถให้แท็กที่แตกต่างกันได้
‫เราจะเพิ่มแท็กเพิ่มเติมให้กับภาพเดียวกันนั้นและฉันจะเรียกมันว่าการทดสอบ
‫หากเราทำภาพนักเทียบท่า ls คุณจะเห็นว่าตอนนี้ฉันมีสามภาพด้วยรหัสรูปภาพเดียวกัน
‫ถ้าฉันทำรูปภาพนักเทียบท่าดัน bretfisher / nginx:
‫การทดสอบและคราวนี้ฉันระบุการทดสอบให้สังเกตว่ามันบอกว่าเลเยอร์มีอยู่แล้ว
‫นั่นเป็นส่วนหนึ่งของอัตราการออมที่ยอดเยี่ยมของเรา
‫เมื่อเราดาวน์โหลดและอัพโหลดรูปภาพแสดงว่ามีเลเยอร์ที่มีอยู่แล้วมันจะไม่รบกวนการอัปโหลดอีกครั้ง
‫หากเราย้อนกลับไปและฉันกดรีเฟรชคุณจะเห็นว่าตอนนี้ฉันมีแท็กอื่นแล้ว
‫แต่แน่นอนถ้าฉันเพิ่งทำภาพเทียบท่าเราเห็นว่าเราเห็นว่ามันเป็นรหัสรูปภาพเดียวกันและทั้งสองด้านของการเชื่อมต่อนี้รู้
‫ถ้าฉันต้องการให้นี่เป็นที่เก็บส่วนตัวเพราะนั่นเป็นคุณสมบัติที่สนับสนุนของ Docker Hub
‫สิ่งที่ฉันอาจต้องการทำคือสร้างที่เก็บข้อมูลก่อน
‫จากนั้นเมื่อฉันผลักมันรหัสจะไม่เปิดเผยต่อสาธารณะบนอินเทอร์เน็ต
‫ว้าวมีรูปภาพและแท็กมากมาย
‫ดังนั้นเรามาทำการตรวจทานอย่างรวดเร็ว
‫อย่างที่คุณเห็นคุณสามารถติดแท็กสิ่งต่างๆลงบนภาพได้ แต่ต้องอยู่ในรูปแบบเฉพาะเพื่อทำงานกับ Docker
‫Hub คุณไม่สามารถเรียกบางสิ่งบางอย่าง nginx
‫แล้วอัปโหลดเพราะมันจะไม่ทำงานเว้นแต่จะมี ID บัญชีของคุณหรือรหัสองค์กรที่อยู่ข้างหน้า
‫จากนั้นฉันได้พูดคุยเกี่ยวกับวิธีที่คุณสามารถมีแท็กจำนวนมากสำหรับรหัสภาพเดียวกันและเพียงเพราะคุณติดแท็กหรือติดแท็กให้กับรูปภาพที่มีอยู่แล้วมันไม่ได้เปลี่ยน
‫ID ภาพนั้นจริง
‫โปรดจำไว้ว่าแท็กล่าสุดเป็นเพียงแท็กเริ่มต้นเท่านั้น
‫ไม่มีอะไรพิเศษเป็นพิเศษเกี่ยวกับเรื่องนี้ แต่เราถือว่าเป็นเรื่องเกี่ยวกับ Docker
‫Hub มันค่อนข้างเป็นมาตรฐานที่นั่นผู้คนใช้แท็กล่าสุดเป็นวิธีในการระบุภาพที่มีความเสถียรล่าสุด
‫ฉันแสดงวิธีการลงชื่อเข้าใช้และออกจาก Docker Hub อย่างรวดเร็วจาก CLI
‫โปรดจำไว้ว่าการจัดเก็บ ID เซสชันในการกำหนดค่าท้องถิ่นของคุณหากคุณใช้เครื่อง Linux
‫และคุณต้องออกจากระบบเพื่อลบออกหากคุณใช้เครื่อง
‫Linux ที่ใช้ร่วมกันหรือโฮสต์เช่นเซิร์ฟเวอร์ จากนั้นเป็นเพียงการเตือนถ้าคุณต้องการสร้างอิมเมจ
‫Docker Hub ส่วนตัวคุณควรสร้างที่เก็บข้อมูลก่อนก่อนที่จะอัปโหลด