วิธีแก้ไขข้อผิดพลาด“ Docker: Formature Formating Reference”

Docker ทำให้ง่ายต่อการสร้างเรียกใช้และจัดการคอนเทนเนอร์ อย่างไรก็ตามคุณอาจพบ“รูปแบบการอ้างอิงที่ไม่ถูกต้อง” ข้อผิดพลาดเมื่อพยายามเรียกใช้หรือสร้างภาพในกรณีส่วนใหญ่ปัญหาเกิดจากความผิดพลาดในการจัดรูปแบบเล็ก ๆ ในชื่อภาพหรือแท็กตัวอย่างเช่นอาจเป็นเพราะตัวอักษรตัวพิมพ์ใหญ่อักขระพิเศษหรือค่าที่ขาดหายไปในคู่มือนี้ฉันจะอธิบายสาเหตุทั่วไปของข้อผิดพลาดนี้และวิธีการแก้ไขเพื่อป้องกันไม่ให้เกิดขึ้นอีกครั้ง

สารบัญ

ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Docker ไม่สามารถตีความรูปแบบของชื่อภาพของคุณได้ หากชื่อมีโครงสร้างไม่ถูกต้อง Docker ไม่สามารถประมวลผลคำขอและส่งข้อผิดพลาด“ รูปแบบการอ้างอิงที่ไม่ถูกต้อง”

Docker ต้องการชื่อภาพเพื่อติดตามโครงสร้างเฉพาะเพื่อทำงานอย่างถูกต้อง ไวยากรณ์ทั่วไปคือ:

[registry/][repository][:tag]

เพื่อให้แน่ใจว่าชื่อภาพของคุณถูกต้องให้ทำตามกฎเหล่านี้:

  • ใช้ตัวอักษรตัวพิมพ์เล็กเท่านั้น Docker ไม่อนุญาตให้ตัวอักษรตัวพิมพ์ใหญ่ในชื่อรูปภาพ
  • คุณสามารถรวมตัวเลข, ยัติภังค์ (-), จุด (.) และขีดล่าง (_) เพื่อแยกคำหรือเวอร์ชันเช่น MY-APP_V1.0
  • หลีกเลี่ยงพิเศษ ตัวละครเช่น @, #,! หรือ $, เป็น Docker จะไม่ยอมรับพวกเขา
  • ชื่ออิมเมจนักเทียบท่าจะต้องปฏิบัติตามกฎการตั้งชื่อ DNS ซึ่งหมายความว่าแต่ละส่วนของชื่อ (คั่นด้วยสแลชหรือจุด) ควรมีความยาวระหว่าง 1 ถึง 63 อักขระและไม่สามารถวางยัติภังค์ได้ที่จุดเริ่มต้นหรือสิ้นสุดของส่วน
  • ชื่อภาพเต็มรวมถึงข้อมูลรีจิสทรีและแท็กใด ๆ จะต้องมีไม่เกิน 255 อักขระทั้งหมด

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

ลองสำรวจสาเหตุที่พบบ่อยที่สุดสำหรับข้อผิดพลาด“ รูปแบบการอ้างอิงที่ไม่ถูกต้อง” และวิธีการแก้ไข:

ตัวอักษรตัวใหญ่ในชื่อภาพ

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

docker pull NGINX

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

docker pull nginx

อักขระพิเศษหรือไม่ถูกต้อง

บางครั้งผู้ใช้รวมถึงอักขระที่นักเทียบท่าไม่อนุญาต สัญลักษณ์เหล่านี้รวมถึงเครื่องหมาย @ sign, ช่องว่างหรืออักขระที่คัดลอกมาจากเว็บไซต์หรือเอกสารที่ดูปกติ แต่ไม่ใช่

ตัวอย่างเช่นคำสั่งต่อไปนี้มีอักขระพิเศษ @ซึ่งจะทำให้เกิดข้อผิดพลาดที่ระบุไว้:

docker run ubuntu@:latest

ในการแก้ไขข้อผิดพลาดนี้ตรวจสอบให้แน่ใจว่าไม่มีอักขระเพิ่มเติมหรือปัญหาการจัดรูปแบบในคำสั่ง คุณสามารถใช้ตัวแก้ไขข้อความธรรมดาเพื่อตรวจสอบและทำความสะอาดคำสั่ง (ถ้าจำเป็น):

docker run ubuntu:latest

ลำไส้ใหญ่ที่ไม่มีแท็ก

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

docker pull node:

Docker คาดหวังอะไรบางอย่างหลังจากลำไส้ใหญ่เช่นล่าสุด 18-Alpine หรือแท็กอื่น ๆ ที่ถูกต้อง หากไม่มีการจัดเตรียมชื่อภาพจะไม่สมบูรณ์และจะทำให้เกิดข้อผิดพลาด“ รูปแบบการอ้างอิงที่ไม่ถูกต้อง”:

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

docker pull node:latest

เส้นทางไฟล์หรือการติดตั้งระดับเสียงด้วยช่องว่าง

เมื่อคุณรวมพา ธ ไฟล์ที่มีช่องว่างโดยเฉพาะอย่างยิ่งกับตัวเลือกเช่น-v(การเมานต์ปริมาตร) นักเทียบท่าอาจตีความบางส่วนของเส้นทางเป็นอาร์กิวเมนต์แยกต่างหากหรือแม้แต่ส่วนหนึ่งของชื่อภาพ เป็นผลให้คุณอาจพบผลลัพธ์ที่ไม่คาดคิดดังที่แสดงด้านล่าง:

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 อาจพบปัญหาเช่นข้อผิดพลาด“ รูปแบบการอ้างอิงที่ไม่ถูกต้อง”

ตัวอย่างเช่นเราเรียกใช้คำสั่งต่อไปนี้เพื่อดึง Ubuntu จาก Hub Docker:

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: ภาพล่าสุดโดยไม่มีปัญหาใด ๆ นอกจากนี้คุณยังสามารถกำหนดเวอร์ชันเฉพาะเช่น 18.04 หากจำเป็น

คัดลอกและวางปัญหา

บางครั้งผู้ใช้คัดลอกคำสั่งจากแบบฝึกหัดหรือเอกสารออนไลน์ คำสั่งที่คัดลอกเหล่านี้อาจมีอักขระที่ซ่อนอยู่เช่นช่องว่างที่มองไม่เห็นเครื่องหมายวรรคตอนที่ไม่ใช่ภาษาอังกฤษหรือเครื่องหมายคำพูดพิเศษ อักขระเหล่านี้สามารถทำลายคำสั่ง Docker ของคุณได้อย่างเงียบ ๆ

เพื่อหลีกเลี่ยงสิ่งนี้จะเป็นการดีกว่าที่จะพิมพ์คำสั่งตัวเองเมื่อเป็นไปได้หรือวางลงในตัวแก้ไขข้อความธรรมดาก่อนเพื่อลบการจัดรูปแบบที่ไม่ต้องการ

ห่อหุ้ม

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

Related Posts