Docker ช่วยให้การสร้าง รัน และจัดการคอนเทนเนอร์เป็นเรื่องง่าย อย่างไรก็ตาม คุณอาจพบข้อผิดพลาด "Invalid Reference Format" เมื่อรันหรือสร้างอิมเมจ ในกรณีส่วนใหญ่ ข้อผิดพลาดนี้เกิดจากข้อผิดพลาดการจัดรูปแบบเล็กน้อยในชื่ออิมเมจหรือแท็ก ตัวอย่างเช่น ข้อผิดพลาดอาจเกิดจากตัวพิมพ์ใหญ่ อักขระพิเศษ หรือค่าที่หายไป คู่มือนี้จะอธิบายสาเหตุทั่วไปของข้อผิดพลาดนี้และวิธีแก้ไขเพื่อป้องกันไม่ให้เกิดขึ้นอีก
แก้ไขข้อผิดพลาด "รูปแบบการอ้างอิงไม่ถูกต้อง"
มาดูสาเหตุที่พบบ่อยที่สุดของข้อผิดพลาด "รูปแบบการอ้างอิงไม่ถูกต้อง" และวิธีแก้ไขกัน:
ตัวพิมพ์ใหญ่ในชื่อภาพ
Docker กำหนดให้ชื่ออิมเมจเป็นตัวพิมพ์เล็ก แม้แต่ตัวอักษรพิมพ์ใหญ่เพียงตัวเดียวก็อาจทำให้เกิดข้อผิดพลาดในการจัดรูปแบบได้ ตัวอย่างเช่น การรันคำสั่งต่อไปนี้จะส่งผลให้เกิดข้อผิดพลาด:
docker pull NGINX
ชื่อไฟล์เก็บถาวรต้องเป็นตัวพิมพ์เล็ก
เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ โปรดตรวจสอบอีกครั้งเสมอว่าชื่อรูปภาพของคุณเป็นตัวพิมพ์เล็กก่อนที่จะรันคำสั่ง
docker pull nginx
ใช้ตัวอักษรพิมพ์เล็ก
อักขระพิเศษหรือไม่ถูกต้อง
บางครั้งผู้ใช้อาจเพิ่มอักขระที่ Docker ไม่อนุญาตโดยไม่ได้ตั้งใจ ซึ่งรวมถึงเครื่องหมาย @ ช่องว่าง หรืออักขระที่คัดลอกมาจากเว็บไซต์หรือเอกสารที่ดูเหมือนปกติแต่ไม่ใช่
ตัวอย่างเช่น คำสั่งต่อไปนี้มีอักขระพิเศษ @ ซึ่งจะทำให้เกิดข้อผิดพลาดดังต่อไปนี้:
docker run ubuntu@:latest
ข้อผิดพลาดอักขระพิเศษ
เพื่อแก้ไขข้อผิดพลาดนี้ โปรดตรวจสอบให้แน่ใจว่าไม่มีอักขระพิเศษหรือปัญหาการจัดรูปแบบในคำสั่ง คุณสามารถใช้โปรแกรมแก้ไขข้อความธรรมดาเพื่อตรวจสอบและล้างข้อมูลคำสั่งได้ (หากจำเป็น):
docker run ubuntu:latest
หลีกเลี่ยงการใช้ตัวอักษรพิเศษ
ลำไส้ใหญ่ไม่มีป้าย
หนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดคือการใส่เครื่องหมายโคลอนต่อท้ายชื่อรูปภาพ แต่ไม่ได้ใส่แท็ก ตัวอย่างเช่น ลองคำสั่งต่อไปนี้เพื่อดึง Node:
docker pull node:
Docker ต้องการค่าหลังเครื่องหมายโคลอน เช่น latest , 18-alpine หรือแท็กอื่นๆ ที่ถูกต้อง หากไม่มีการระบุค่า ชื่อรูปภาพจะถือว่าไม่สมบูรณ์และจะทำให้เกิดข้อผิดพลาด "Invalid Reference Format":
ลำไส้ใหญ่ไม่มีป้าย
เพื่อแก้ไขข้อผิดพลาดนี้ ให้เพิ่มแท็กที่เหมาะสมหลังเครื่องหมายโคลอนเพื่อทำให้ชื่อรูปภาพสมบูรณ์และถูกต้อง:
docker pull node:latest
เพิ่มแท็กหลังโคลอน
เส้นทางไฟล์หรือการติดตั้งไดรฟ์มีช่องว่าง
เมื่อคุณระบุพาธไฟล์ที่มีช่องว่าง โดยเฉพาะอย่างยิ่งเมื่อใช้ตัวเลือกอย่าง -v (volume mount) Docker อาจตีความบางส่วนของพาธผิดว่าเป็นอาร์กิวเมนต์แยกต่างหาก หรือแม้กระทั่งเป็นส่วนหนึ่งของชื่ออิมเมจ ส่งผลให้คุณอาจพบผลลัพธ์ที่ไม่คาดคิดดังที่แสดงด้านล่าง:
docker run -v /home/user/My Folder:/app ubuntu
ช่องว่างในชื่อไฟล์
เพื่อหลีกเลี่ยงปัญหานี้ ควรใส่ช่องว่างในเส้นทางไฟล์และใส่เครื่องหมายคำพูดคู่เสมอ ดังแสดงด้านล่าง:
docker run -v "/home/user/My Folder:/app" ubuntu
แทนที่“/home/user/My Folder” ด้วยเส้นทางจริงไปยังไดเร็กทอรีที่คุณต้องการจะติดตั้งลงในคอนเทนเนอร์
การใช้ตัวแปรที่ไม่เหมาะสม
เมื่อทำงานกับ Docker เป็นเรื่องปกติที่จะใช้ตัวแปรในคำสั่ง โดยเฉพาะอย่างยิ่งเมื่อระบุเวอร์ชันของอิมเมจ อย่างไรก็ตาม หากตัวแปรอย่าง $VERSION ไม่ได้รับการตั้งค่าอย่างถูกต้อง Docker อาจพบปัญหาต่างๆ เช่น ข้อผิดพลาด "Invalid Reference Format"
ตัวอย่างเช่น รันคำสั่งต่อไปนี้เพื่อดึง Ubuntu จาก Docker Hub:
docker pull ubuntu:$VERSION
ในที่นี้$VERSION ควรจะแสดงถึงเวอร์ชันของอิมเมจ Ubuntu ที่คุณต้องการดึงออกมา แต่ถ้าคุณไม่ได้กำหนดค่าให้กับมัน Docker จะตีความคำสั่งเป็น "docker pull ubuntu:" ซึ่งจะทำให้ชื่ออิมเมจไม่ถูกต้องเนื่องจากลงท้ายด้วยเครื่องหมายโคลอนและไม่มีแท็กเวอร์ชันที่จำเป็น
การใช้ตัวแปรที่ไม่ถูกต้อง
เพื่อหลีกเลี่ยงปัญหานี้ โปรดตรวจสอบให้แน่ใจว่าตัวแปรทั้งหมดที่ใช้ในคำสั่งได้รับการกำหนดไว้อย่างถูกต้อง ใน Linux คุณสามารถตั้งค่าตัวแปรได้โดยใช้ไวยากรณ์ต่อไปนี้
$VERSION=latest
จากนั้นดึงเวอร์ชันที่ระบุโดยดำเนินการคำสั่งต่อไปนี้
docker pull ubuntu:$VERSION
ใน Windows CMD คุณต้องใช้คำสำคัญ set เพื่อกำหนดตัวแปร (เช่น เวอร์ชัน) จากนั้นใช้ รูปแบบ %VARIABLE% เพื่ออ้างอิงถึงตัวแปรนั้นในคำสั่ง เช่น docker pull
set VERSION=latest
docker pull ubuntu:%VERSION%
ในที่นี้ $VERSION จะเก็บค่าล่าสุด ดังนั้น Docker จึงดึง อิมเมจ ubuntu:latest ออกมาได้ โดยไม่มีปัญหาใดๆ คุณยังสามารถกำหนดเวอร์ชันเฉพาะ เช่น 18.04 ได้ หากจำเป็น
กำหนดตัวแปรอย่างเหมาะสม
ปัญหาการคัดลอกและวาง
บางครั้งผู้ใช้อาจคัดลอกคำสั่งจากบทช่วยสอนหรือเอกสารออนไลน์ คำสั่งที่คัดลอกเหล่านี้อาจมีอักขระที่ซ่อนอยู่ เช่น ช่องว่างที่มองไม่เห็น เครื่องหมายวรรคตอนที่ไม่ใช่ภาษาอังกฤษ หรือเครื่องหมายคำพูดพิเศษ อักขระเหล่านี้อาจทำให้คำสั่ง Docker ของคุณเสียหายโดยไม่ตั้งใจ
เพื่อหลีกเลี่ยงปัญหานี้ ควรพิมพ์คำสั่งด้วยตนเองเมื่อทำได้ หรือวางคำสั่งลงในโปรแกรมแก้ไขข้อความธรรมดาเสียก่อน เพื่อลบการจัดรูปแบบที่ไม่ต้องการ
ตอนนี้คุณทราบสาเหตุทั่วไปของข้อผิดพลาด "Invalid Reference Format" ใน Docker และวิธีแก้ไขแล้ว คุณก็จะสามารถหลีกเลี่ยงปัญหานี้ได้ในอนาคต เคล็ดลับง่ายๆ เหล่านี้จะช่วยประหยัดเวลาและลดความยุ่งยากได้อย่างมาก ตั้งแต่การตรวจสอบการใช้ตัวพิมพ์ใหญ่ไปจนถึงการตรวจสอบให้แน่ใจว่าตัวแปรของคุณถูกตั้งค่าอย่างถูกต้อง หากคุณพร้อมที่จะศึกษาเพิ่มเติม คุณอาจต้องการเรียนรู้วิธีการแท็กและพุชอิมเมจ Docker ที่กำหนดเองของคุณไปยังรีจิสทรี หรือวิธีการล้างอิมเมจที่ไม่ได้ใช้เพื่อรักษาความสะอาดของระบบ