
Docker upraszcza proces tworzenia, uruchamiania i zarządzania kontenerami. Niemniej jednak, częstym problemem, z jakim borykają się użytkownicy, jest błąd „ Nieprawidłowy format referencyjny ”, który pojawia się podczas tworzenia lub wykonywania obrazu. Zazwyczaj błąd ten wynika z drobnych problemów z formatowaniem nazwy lub tagu obrazu, które mogą obejmować wielkie litery, znaki specjalne lub pusty tag. W tym artykule omówimy najczęstsze przyczyny tego błędu i zaproponujemy rozwiązania, aby uniknąć go w przyszłości.
Zrozumienie błędu „Nieprawidłowy format odniesienia” w Dockerze
Błąd „Nieprawidłowy format odniesienia” oznacza, że Docker nie może zinterpretować podanej nazwy obrazu z powodu nieprawidłowego formatowania. Aby Docker mógł poprawnie przetwarzać żądania, nazwy obrazów muszą być zgodne z określoną strukturą.
Wymagana składnia jest następująca:
[registry/][repository][:tag]
Aby zapewnić zgodność, należy stosować się do poniższych wytycznych:
- Zawsze używaj małych liter. W nazwach obrazów Docker nie można używać wielkich liter.
- Do oddzielania słów lub wskazywania wersji używaj wartości liczbowych, myślników (-), kropek (.) i podkreśleń (_), np
my-app_v1.0
.. - Unikaj znaków specjalnych, takich jak @, #, ! lub $, gdyż są one niedozwolone.
- Stosuj się do zasad nazewnictwa DNS: każdy segment nazwy obrazu (rozdzielony ukośnikami lub kropkami) musi mieć od 1 do 63 znaków, a myślniki nie powinny znajdować się na początku ani na końcu.
- Pełna nazwa obrazu, łącznie ze szczegółami rejestru i tagów, nie może przekraczać 255 znaków.
Rozwiązywanie błędu „Nieprawidłowy format odniesienia”
Przyjrzyjmy się częstym przyczynom błędu „nieprawidłowy format odniesienia” i sposobom ich rozwiązania:
Problemy z wielkimi literami w nazwach obrazów
Docker wymaga, aby wszystkie nazwy obrazów były pisane wyłącznie małymi literami. Obecność jednej wielkiej litery może prowadzić do problemów z formatowaniem. Na przykład wykonanie poniższego polecenia spowoduje błąd:
docker pull NGINX

Aby zapobiec temu problemowi, zawsze upewnij się, że nazwy obrazów są zapisane małymi literami przed wykonaniem polecenia:
docker pull nginx

Badanie znaków specjalnych lub nieprawidłowych
Użytkownicy mogą nieumyślnie używać w swoich poleceniach niedozwolonych znaków, w tym spacji i symbolu @.Na przykład, poniższe polecenie zawiera znak specjalny, który spowoduje błąd:
docker run ubuntu@:latest

Aby rozwiązać takie błędy, upewnij się, że w poleceniach nie ma zbędnych znaków. Możesz skorzystać z edytora tekstu w celu weryfikacji i korekty:
docker run ubuntu:latest

Problemy z dwukropkami bez znaczników
Częstym błędem jest umieszczanie dwukropka na końcu nazwy obrazu bez dołączenia tagu. Na przykład, podczas próby pobrania węzła za pomocą poniższego polecenia:
docker pull node:
Docker oczekuje znacznika po dwukropku, takiego jak latest
lub 18-alpine
. Jeśli go pominięto, polecenie zwraca niepełną nazwę obrazu, co powoduje błąd „nieprawidłowy format odniesienia”:

Aby rozwiązać ten problem, dodaj po dwukropku w nazwie obrazu prawidłowy tag:
docker pull node:latest

Ścieżki plików lub montowania woluminów zawierające spacje
Dołączanie ścieżek plików zawierających spacje, szczególnie w przypadku opcji takich jak -v
montowanie woluminów, może spowodować błędną interpretację segmentów ścieżki przez Dockera. Może to prowadzić do nieoczekiwanego zachowania:
docker run -v /home/user/My Folder:/app ubuntu

Aby wyeliminować ten problem, należy ująć wszystkie ścieżki zawierające spacje w cudzysłowy, jak pokazano poniżej:
docker run -v "/home/user/My Folder:/app" ubuntu
Pamiętaj o zastąpieniu „/home/user/My Folder” rzeczywistą ścieżką, którą chcesz zamontować w kontenerze.
Niewłaściwe użycie zmiennych
Jeśli zmienna, taka jak ta $VERSION
, nie jest poprawnie skonfigurowana, może to prowadzić do błędu „nieprawidłowy format odniesienia” w Dockerze. Rozważmy na przykład poniższe polecenie, które próbuje pobrać obraz z Docker Hub:
docker pull ubuntu:$VERSION
Jeśli $VERSION
nie jest ustawiona, Docker odczyta polecenie jako docker pull ubuntu:
, co spowoduje powstanie błędnej nazwy obrazu, ponieważ kończy się ona dwukropkiem bez prawidłowego znacznika.

Aby temu zapobiec, upewnij się, że wszystkie zmienne używane w poleceniach są poprawnie zdefiniowane. W środowisku Linux ustaw zmienną, używając następującej składni:
$VERSION=latest
Następnie możesz pobrać wyznaczoną wersję, wykonując:
docker pull ubuntu:$VERSION
W wierszu poleceń CMD systemu Windows użyj set
składni, aby zdefiniować zmienną i odwołać się do niej za pomocą %VARIABLE%
formatu. Na przykład:
set VERSION=latestdocker pull ubuntu:%VERSION%
Ustawienie $VERSION
najnowszej wersji pozwala na płynne pobieranie obrazu ubuntu:latest
bez błędów. W razie potrzeby można również przypisać konkretne tagi wersji, takie jak 18.04.

Typowe błędy kopiowania i wklejania
Użytkownicy często kopiują polecenia ze źródeł online, ale mogą one nieumyślnie zawierać ukryte znaki, takie jak niewidoczne spacje lub nietypowe znaki interpunkcyjne. Takie ukryte znaki mogą zakłócać działanie poleceń Dockera.
Aby uniknąć tych pułapek, staraj się wpisywać polecenia ręcznie, o ile to możliwe, lub wklejaj je najpierw do edytora tekstu, aby pozbyć się niechcianego formatowania.
Wniosek
Dzięki zrozumieniu głównych przyczyn błędu „Nieprawidłowy format referencji” w Dockerze i praktycznym rozwiązaniom, jesteś teraz w stanie zapobiec temu problemowi w przyszłości. Regularne sprawdzanie błędów kapitalizacji, dbanie o prawidłowe przypisywanie zmiennych oraz ostrożność w używaniu znaków specjalnych i spacji może znacznie usprawnić korzystanie z Dockera.
Dodaj komentarz