รูปแบบการอ้างอิงนักเทียบท่าไม่ถูกต้อง

Rup Baeb Kar Xangxing Nak Theiyb Tha Mi Thuk Txng



เมื่อทำงานกับอิมเมจ Docker หรือ Dockerfile คุณอาจพบข้อผิดพลาด 'รูปแบบการอ้างอิงที่ไม่ถูกต้อง'

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

การอ้างอิงรูปภาพใน Docker คืออะไร

ใน Docker การอ้างอิงรูปภาพหมายถึงวิธีการระบุและค้นหารูปภาพ Docker เฉพาะภายในรีจิสทรี Docker (Docker Hub) หรือโฮสต์ Docker ในเครื่อง







ตามค่าเริ่มต้น การอ้างอิงรูปภาพจะประกอบด้วยองค์ประกอบหลัก 2 ส่วน:



พื้นที่เก็บข้อมูล – ส่วนแรกกำหนดพื้นที่เก็บข้อมูลสำหรับอิมเมจเป้าหมาย นี่คือหน่วยขององค์กรระดับบนสุดสำหรับอิมเมจ Docker ซึ่งส่วนใหญ่ใช้เพื่อเป็นตัวแทนขององค์กรหรือบุคคลที่จัดการอิมเมจ ตัวอย่างเช่น คุณสามารถค้นหารูปภาพชื่อ Microsoft/SQL-server ในกรณีนี้ ส่วนแรกแสดงถึงองค์กรที่ดูแลรักษาภาพลักษณ์



แท็ก – ส่วนที่สองของรูปภาพคือป้ายกำกับที่เกี่ยวข้องกับเวอร์ชันหรือรูปแบบเฉพาะของรูปภาพภายในพื้นที่เก็บข้อมูล แท็กรูปภาพสามารถแสดงถึงเวอร์ชันต่างๆ ของรูปภาพเดียวกัน รุ่นที่แตกต่างกัน หรือความเข้ากันได้ที่แตกต่างกัน ตัวอย่างเช่น ในรูปภาพของ nginx:latest โดยที่แท็กล่าสุดอ้างอิงถึงเวอร์ชันล่าสุดของรูปภาพ Nginx





เมื่อระบุรูปภาพในคำสั่ง Dockerfile หรือ docker ชื่อรูปภาพจะต้องเป็นไปตามกฎการตั้งชื่อต่อไปนี้:

  • ชื่อที่เก็บควรเป็นตัวพิมพ์เล็ก
  • ที่เก็บยังสามารถประกอบด้วยตัวอักษร ตัวเลข ขีดกลาง (-) ขีดล่าง (_) หรือเครื่องหมายทับ (/) เพื่อระบุองค์กรหรือการจัดกลุ่มภายในรีจิสทรี
  • ไม่ควรมีอักขระช่องว่าง (ช่องว่างหรือแท็บ) ในชื่อรูปภาพ

รูปแบบการอ้างอิงนักเทียบท่าไม่ถูกต้อง

เมื่อคุณได้รับข้อผิดพลาด “รูปแบบการอ้างอิงที่ไม่ถูกต้อง” เมื่อเรียกใช้คำสั่ง Dockerfile หรือ Docker แสดงว่าชื่อของคุณไม่เป็นไปตามกฎข้างต้น



ตัวอย่างดังแสดง:

$ นักเทียบท่าดึง BusyBox

หากเรารันคำสั่งข้างต้น มันจะส่งคืนข้อผิดพลาดดังภาพ:

ไม่ถูกต้อง อ้างอิง รูปแบบ: ชื่อที่เก็บจะต้องเป็นตัวพิมพ์เล็ก

ในกรณีนี้ จะแจ้งเราว่ารูปแบบชื่อรูปภาพไม่ถูกต้อง เนื่องจากชื่อรูปภาพควรเป็นตัวพิมพ์เล็กเสมอ

วิธีแก้ไขข้อผิดพลาดรูปแบบการอ้างอิงที่ไม่ถูกต้องของ Docker

ดังที่คุณสามารถเดาได้ วิธีแรกคือตรวจสอบให้แน่ใจว่ารูปแบบการอ้างอิงรูปภาพนั้นถูกต้อง ซึ่งรวมถึงการตรวจสอบว่าชื่อรูปภาพนั้นถูกต้อง

ตัวอย่างเช่น ในคำสั่งข้างต้น เราสามารถแก้ไขข้อผิดพลาดได้โดยระบุชื่อรูปภาพเป็น:

$ ซูโดะ นักเทียบท่าดึง busybox: ล่าสุด

ในกรณีนี้ คำสั่งควรดึงอิมเมจ Busybox เวอร์ชันล่าสุด

วิธีที่ 2 - แยกคำสั่ง Long Docker

ในบางกรณี คุณอาจพบข้อผิดพลาด 'รูปแบบการอ้างอิงที่ไม่ถูกต้อง' เมื่อเรียกใช้คำสั่ง Docker แบบยาว

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

  • อย่างไรก็ตาม สำหรับ Bash เชลล์ ให้ใช้อักขระหลีกหลายบรรทัดหรือแบ็กสแลช (\)
  • สำหรับ PowerShell คุณสามารถใช้อักขระ backtick (`)
  • สุดท้ายนี้ หากคุณอยู่ใน Command Prompt คุณสามารถใช้อักขระคาเร็ตเป็น ^ ได้

ตัวอย่างเช่น บน Bash ให้รันคำสั่งดังนี้:

$ ซูโดะ นักเทียบท่าสร้าง \

-มัน \

กล่องยุ่ง \

บน PowerShell คุณสามารถเรียกใช้คำสั่งดังที่แสดง:

$ ซูโดะ สร้างนักเทียบท่า `

-มัน `

กล่องยุ่ง `

และสุดท้าย หากคุณอยู่ใน Command Prompt ให้ใช้คำสั่งตามที่แสดง:

$ ซูโดะ นักเทียบท่าสร้าง ^

-มัน ^

บ็อกซ์ บ็อกซ์ ^

วิธีที่ 3 - เส้นทาง ${pwd} และ $(pwd)

สาเหตุทั่วไปอีกประการหนึ่งของข้อผิดพลาดนี้คือเมื่อใช้ตัวแปร ${pwd} สิ่งนี้อาจทำให้เกิดข้อขัดแย้ง ขึ้นอยู่กับประเภทของเชลล์ที่คุณกำลังดำเนินการคำสั่งดังกล่าว

ในกรณีของ PowerShell คุณต้องใช้ตัวแปร ${pwd} แทน $(pwd)

ดังที่คุณสามารถเดาได้ ในกรณีของ Bash ให้ใช้รูปแบบวงเล็บแทนอินพุตที่มีเครื่องหมายปีกกาเป็น $(pwd)

บทสรุป

โพสต์นี้กล่าวถึงสาเหตุหลักของ “รูปแบบการอ้างอิงที่ไม่ถูกต้อง” เมื่อทำงานกับคำสั่ง Dockerfile หรือนักเทียบท่า นอกจากนี้เรายังสำรวจวิธีการหลักสามวิธีที่คุณสามารถใช้เพื่อแก้ไขปัญหานี้