Μη έγκυρη μορφή αναφοράς Docker

Me Enkyre Morphe Anaphoras Docker



Όταν εργάζεστε με εικόνες Docker ή Dockerfile, ενδέχεται να αντιμετωπίσετε το σφάλμα 'μη έγκυρη μορφή αναφοράς'.

Σε αυτό το σεμινάριο, θα μάθουμε τι σημαίνει αυτό το σφάλμα, γιατί παρουσιάζεται και πώς μπορείτε να το επιλύσετε στη χρήση του Docker.

Τι είναι μια αναφορά εικόνας στο Docker;

Στο Docker, μια αναφορά εικόνας αναφέρεται σε μια μέθοδο αναγνώρισης και εντοπισμού μιας συγκεκριμένης εικόνας Docker εντός του μητρώου Docker (Docker Hub) ή του τοπικού κεντρικού υπολογιστή Docker.







Από προεπιλογή, η αναφορά εικόνας αποτελείται από δύο κύρια στοιχεία:



Αποθετήριο – Το πρώτο μέρος ορίζει το χώρο αποθήκευσης για την εικόνα προορισμού. Αυτή είναι η οργανωτική μονάδα ανώτατου επιπέδου για την εικόνα Docker, που χρησιμοποιείται κυρίως για την αναπαράσταση του οργανισμού ή του ατόμου που διαχειρίζεται την εικόνα. Για παράδειγμα, μπορείτε να βρείτε μια εικόνα με το όνομα Microsoft/SQL-server. Σε αυτή την περίπτωση, το πρώτο μέρος αντιπροσωπεύει τον οργανισμό που διατηρεί την εικόνα.



Ετικέτα – Το δεύτερο μέρος μιας εικόνας είναι μια ετικέτα που σχετίζεται με τη συγκεκριμένη έκδοση ή παραλλαγή της εικόνας εντός του αποθετηρίου. Οι ετικέτες εικόνας μπορούν να αντιπροσωπεύουν διαφορετικές εκδόσεις της ίδιας εικόνας, διαφορετικές εκδόσεις ή διαφορετική συμβατότητα. Για παράδειγμα, στην εικόνα του nginx:latest όπου η τελευταία ετικέτα αναφέρεται στην πιο πρόσφατη έκδοση της εικόνας Nginx.





Όταν προσδιορίζετε την εικόνα είτε σε μια εντολή Dockerfile είτε σε εντολή docker, το όνομα της εικόνας πρέπει να ακολουθεί τους ακόλουθους κανόνες ονομασίας:

  • Το όνομα του αποθετηρίου πρέπει να είναι πεζό.
  • Το αποθετήριο μπορεί επίσης να περιέχει γράμματα, αριθμούς, παύλες (-), κάτω παύλες (_) ή κάθετες προς τα εμπρός (/) για να υποδείξει την οργάνωση ή την ομαδοποίηση μέσα σε ένα μητρώο.
  • Δεν πρέπει να υπάρχουν χαρακτήρες κενού διαστήματος (κενά ή καρτέλες) στο όνομα της εικόνας.

Μη έγκυρη μορφή αναφοράς Docker

Όταν λαμβάνετε το σφάλμα 'μη έγκυρη μορφή αναφοράς' κατά την εκτέλεση της εντολής Dockerfile ή Docker, σημαίνει ότι το όνομά σας δεν έχει συμμορφωθεί με τους παραπάνω κανόνες.



Ένα παράδειγμα είναι όπως φαίνεται:

$ Docker pull BusyBox

Εάν εκτελέσουμε την παραπάνω εντολή, θα επιστρέψει ένα σφάλμα όπως φαίνεται:

Μη έγκυρο αναφορά μορφή: το όνομα του αποθετηρίου πρέπει να είναι πεζό

Σε αυτήν την περίπτωση, μας λέει ότι η μορφή του ονόματος της εικόνας είναι λανθασμένη, καθώς το όνομα της εικόνας πρέπει να είναι πάντα πεζά.

Πώς να διορθώσετε το σφάλμα μορφής μη έγκυρης αναφοράς Docker

Όπως μπορείτε να μαντέψετε, η πρώτη μέθοδος είναι να διασφαλίσετε ότι η μορφή αναφοράς της εικόνας είναι σωστή. Αυτό περιλαμβάνει την επαλήθευση ότι το όνομα της εικόνας είναι έγκυρο.

Για παράδειγμα, στην παραπάνω εντολή, μπορούμε να διορθώσουμε το σφάλμα καθορίζοντας το όνομα της εικόνας ως:

$ sudo docker pull busybox: πιο πρόσφατο

Σε αυτήν την περίπτωση, η εντολή θα πρέπει να τραβήξει την πιο πρόσφατη έκδοση της εικόνας Busybox.

Μέθοδος 2 – Διαχωρισμός εντολών Long Docker

Σε ορισμένες άλλες περιπτώσεις, ενδέχεται να αντιμετωπίσετε το σφάλμα 'μη έγκυρη μορφή αναφοράς' κατά την εκτέλεση μιας μεγάλης εντολής Docker.

Σε μια τέτοια περίπτωση, ο διαχωρισμός της εντολής σε πολλές γραμμές είναι καλή πρακτική. Η μέθοδος διαχωρισμού εντολών θα εξαρτηθεί από το κέλυφος και το σύστημά σας.

  • Ωστόσο, για το κέλυφος Bash, χρησιμοποιήστε τον χαρακτήρα διαφυγής πολλαπλών γραμμών ή την ανάστροφη κάθετο (\).
  • Για το PowerShell, μπορείτε να χρησιμοποιήσετε τον χαρακτήρα backtick (`).
  • Τέλος, εάν βρίσκεστε στη Γραμμή εντολών, μπορείτε να χρησιμοποιήσετε έναν χαρακτήρα caret ως ^

Για παράδειγμα, στο Bash, εκτελέστε την εντολή ως εξής:

$ sudo κατασκευή docker \

-το \

busybox \

SH

Στο PowerShell, μπορείτε να εκτελέσετε την εντολή όπως φαίνεται:

$ sudo κατασκευή λιμενεργατών `

-το `

busybox `

SH

Και τέλος, εάν βρίσκεστε στη γραμμή εντολών, χρησιμοποιήστε την εντολή όπως φαίνεται:

$ sudo κατασκευή docker ^

-το ^

busybox ^

SH

Μέθοδος 3 – διαδρομή ${pwd} ΚΑΙ $(pwd).

Μια άλλη κοινή αιτία αυτού του σφάλματος είναι όταν χρησιμοποιείτε τη μεταβλητή ${pwd}. Αυτό μπορεί να προκαλέσει διένεξη, ανάλογα με τον τύπο του κελύφους στον οποίο εκτελείτε την εν λόγω εντολή.

Στην περίπτωση του PowerShell, πρέπει να χρησιμοποιήσετε τη μεταβλητή ${pwd} αντί για $(pwd).

Όπως μπορείτε να μαντέψετε, στην περίπτωση του Bash, χρησιμοποιήστε τη μορφή παρένθεσης αντί για την είσοδο με σγουρά αγκάλια ως $(pwd).

συμπέρασμα

Αυτή η ανάρτηση εξέτασε τις κύριες αιτίες της 'μη έγκυρης μορφής αναφοράς' κατά την εργασία με Dockerfile ή εντολές docker. Εξερευνήσαμε επίσης τρεις βασικές μεθόδους που μπορείτε να χρησιμοποιήσετε για να διορθώσετε αυτό το πρόβλημα.