Home
» Windows
»
Πώς να διορθώσετε το σφάλμα Docker: Μη έγκυρη μορφή αναφοράς
Πώς να διορθώσετε το σφάλμα Docker: Μη έγκυρη μορφή αναφοράς
Το Docker διευκολύνει τη δημιουργία, την εκτέλεση και τη διαχείριση κοντέινερ. Ωστόσο, ενδέχεται να αντιμετωπίσετε ένα σφάλμα "Μη έγκυρη μορφή αναφοράς" κατά την εκτέλεση ή τη δημιουργία μιας εικόνας. Στις περισσότερες περιπτώσεις, αυτό οφείλεται σε ένα μικρό σφάλμα μορφοποίησης στο όνομα ή την ετικέτα της εικόνας. Για παράδειγμα, το σφάλμα θα μπορούσε να οφείλεται σε κεφαλαία γράμματα, ειδικούς χαρακτήρες ή σε τιμές που λείπουν. Αυτός ο οδηγός θα εξηγήσει τις συνήθεις αιτίες αυτού του σφάλματος και πώς να το διορθώσετε για να αποτρέψετε την επανάληψή του.
Διόρθωση σφάλματος "Μη έγκυρη μορφή αναφοράς"
Ας μάθουμε τις πιο συνηθισμένες αιτίες του σφάλματος "Μη έγκυρη μορφή αναφοράς" και πώς να το διορθώσουμε:
Κεφαλαία γράμματα στα ονόματα εικόνων
Το Docker απαιτεί τα ονόματα των εικόνων να είναι πεζά. Ακόμα και ένα μόνο κεφαλαίο γράμμα μπορεί να προκαλέσει σφάλματα μορφοποίησης. Για παράδειγμα, η εκτέλεση της ακόλουθης εντολής θα οδηγήσει σε σφάλμα:
docker pull NGINX
Τα ονόματα αρχείων πρέπει να είναι με πεζά γράμματα
Για να αποφύγετε αυτό το σφάλμα, ελέγχετε πάντα ξανά ότι το όνομα της εικόνας σας είναι γραμμένο με πεζά γράμματα πριν εκτελέσετε την εντολή.
docker pull nginx
Χρησιμοποιήστε πεζά γράμματα
Ειδικός ή μη έγκυρος χαρακτήρας
Μερικές φορές οι χρήστες προσθέτουν κατά λάθος χαρακτήρες που το Docker δεν επιτρέπει. Σε αυτούς περιλαμβάνονται τα σύμβολα @, τα κενά ή οι χαρακτήρες που έχουν αντιγραφεί από έναν ιστότοπο ή ένα έγγραφο και φαίνονται κανονικοί αλλά δεν είναι.
Για παράδειγμα, η ακόλουθη εντολή περιέχει τον ειδικό χαρακτήρα @, ο οποίος θα προκαλέσει το ακόλουθο σφάλμα:
docker run ubuntu@:latest
Σφάλμα ειδικού χαρακτήρα
Για να διορθώσετε αυτό το σφάλμα, βεβαιωθείτε ότι δεν υπάρχουν επιπλέον χαρακτήρες ή προβλήματα μορφοποίησης στην εντολή. Μπορείτε να χρησιμοποιήσετε ένα πρόγραμμα επεξεργασίας απλού κειμένου για να ελέγξετε και να καθαρίσετε την εντολή (εάν είναι απαραίτητο):
docker run ubuntu:latest
Αποφύγετε τους ειδικούς χαρακτήρες
Άνω και κάτω τελεία χωρίς ετικέτα
Ένα από τα πιο συνηθισμένα λάθη είναι να βάζουμε άνω και κάτω τελεία στο τέλος του ονόματος της εικόνας, αλλά να μην συμπεριλαμβάνουμε την ετικέτα. Για παράδειγμα, ας δοκιμάσουμε την ακόλουθη εντολή για να εκτελέσουμε την εντολή Node:
docker pull node:
Το Docker αναμένει μια τιμή μετά την άνω και κάτω τελεία, όπως latest , 18-alpine ή οποιαδήποτε άλλη έγκυρη ετικέτα. Εάν δεν δοθεί καμία τιμή, το όνομα της εικόνας θεωρείται ελλιπές και θα προκαλέσει ένα σφάλμα "Μη έγκυρη μορφή αναφοράς":
Άνω και κάτω τελεία χωρίς ετικέτα
Για να διορθώσετε αυτό το σφάλμα, προσθέστε μια κατάλληλη ετικέτα μετά την άνω και κάτω τελεία για να κάνετε το όνομα της εικόνας πλήρες και έγκυρο:
docker pull node:latest
Προσθήκη ετικετών μετά την άνω και κάτω τελεία
Η διαδρομή αρχείου ή η προσάρτηση τόμου περιέχει κενά
Όταν συμπεριλαμβάνετε μια διαδρομή αρχείου που περιέχει κενά, ειδικά με επιλογές όπως -v (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 μπορεί να αντιμετωπίσει προβλήματα όπως το σφάλμα "Μη έγκυρη μορφή αναφοράς".
Για παράδειγμα, εκτελέστε την ακόλουθη εντολή για να τραβήξετε το Ubuntu από το Docker Hub:
docker pull ubuntu:$VERSION
Εδώ, η $VERSION υποτίθεται ότι αντιπροσωπεύει την έκδοση της εικόνας Ubuntu που θέλετε να τραβήξετε. Αλλά αν δεν της αντιστοιχίσετε μια τιμή, το Docker θα ερμηνεύσει την εντολή ως "docker pull ubuntu:". Αυτό έχει ως αποτέλεσμα ένα μη έγκυρο όνομα εικόνας επειδή τελειώνει με άνω και κάτω τελεία και δεν έχει την απαιτούμενη ετικέτα έκδοσης.
Λανθασμένη χρήση μεταβλητών
Για να το αποφύγετε αυτό, βεβαιωθείτε ότι όλες οι μεταβλητές που χρησιμοποιούνται στην εντολή έχουν οριστεί σωστά. Στο Linux, μπορείτε να ορίσετε μια μεταβλητή χρησιμοποιώντας την ακόλουθη σύνταξη.
$VERSION=latest
Στη συνέχεια, τραβήξτε την καθορισμένη έκδοση εκτελώντας την ακόλουθη εντολή.
docker pull ubuntu:$VERSION
Στο CMD των Windows, πρέπει να χρησιμοποιήσετε τη λέξη-κλειδί set για να ορίσετε μια μεταβλητή (όπως version) και, στη συνέχεια, να χρησιμοποιήσετε τη σύνταξη %VARIABLE% για να αναφερθείτε σε αυτήν σε εντολές όπως το docker pull.
set VERSION=latest
docker pull ubuntu:%VERSION%
Εδώ, η $VERSION διατηρεί την πιο πρόσφατη τιμή, επομένως το Docker τραβάει την εικόνα ubuntu:latest χωρίς προβλήματα. Μπορείτε επίσης να αντιστοιχίσετε μια συγκεκριμένη έκδοση, όπως 18.04, εάν χρειάζεται.
Ορίστε σωστά τις μεταβλητές
Πρόβλημα με αντιγραφή και επικόλληση
Μερικές φορές οι χρήστες αντιγράφουν εντολές από ηλεκτρονικά εκπαιδευτικά βίντεο ή τεκμηρίωση. Αυτές οι αντιγραμμένες εντολές ενδέχεται να περιέχουν κρυφούς χαρακτήρες, όπως αόρατα κενά, σημεία στίξης εκτός αγγλικών ή ειδικά εισαγωγικά. Αυτοί οι χαρακτήρες μπορούν να καταστρέψουν σιωπηλά τις εντολές του Docker.
Για να το αποφύγετε αυτό, είναι καλύτερο να πληκτρολογείτε την εντολή μόνοι σας, όποτε είναι δυνατόν, ή να την επικολλάτε πρώτα σε ένα πρόγραμμα επεξεργασίας απλού κειμένου για να καταργήσετε την ανεπιθύμητη μορφοποίηση.
Τώρα που γνωρίζετε τις συνηθισμένες αιτίες του σφάλματος "Μη έγκυρη μορφή αναφοράς" στο Docker και πώς να το διορθώσετε, θα είστε σε καλό δρόμο για να αποφύγετε αυτό το πρόβλημα στο μέλλον. Από τον έλεγχο της χρήσης κεφαλαίων έως τη σωστή ρύθμιση των μεταβλητών σας, αυτές οι απλές συμβουλές μπορούν να σας εξοικονομήσουν πολύ χρόνο και απογοήτευση. Εάν είστε έτοιμοι να εξερευνήσετε περαιτέρω, ίσως θελήσετε επίσης να μάθετε πώς να προσθέτετε ετικέτες και να προωθείτε τις προσαρμοσμένες εικόνες Docker στο μητρώο ή πώς να καθαρίζετε τις αχρησιμοποίητες εικόνες για να διατηρείτε το σύστημά σας καθαρό.