Ebből az oktatóanyagból megtudjuk, mit jelent ez a hiba, miért fordul elő, és hogyan oldhatja meg a Docker-használat során.
Mi az a képreferencia a Dockerben?
A Dockerben a képhivatkozás egy adott Docker-kép azonosításának és helyének meghatározására szolgáló módszerre vonatkozik a Docker-nyilvántartásban (Docker Hub) vagy a helyi Docker-gazdagépen.
Alapértelmezés szerint a képreferencia két fő összetevőből áll:
Repository – Az első rész meghatározza a célkép tárhelyét. Ez a Docker image legfelső szintű szervezeti egysége, amelyet főként a szervezet vagy a képet kezelő személy képviseletére használnak. Például találhat egy Microsoft/SQL-szerver nevű képet. Ebben az esetben az első rész az arculatot fenntartó szervezetet reprezentálja.
Címke – A kép második része a kép adott verziójához vagy változatához társított címke a tárhelyen belül. A képcímkék ugyanazon kép különböző verzióit, különböző kiadásokat vagy eltérő kompatibilitást képviselhetnek. Például az nginx:latest képében, ahol a legújabb címke az Nginx kép legújabb verziójára utal.
Amikor a képet Dockerfile vagy Docker parancsban adja meg, a kép nevének követnie kell a következő elnevezési szabályokat:
- Az adattár nevének kisbetűnek kell lennie.
- A tároló tartalmazhat betűket, számokat, kötőjeleket (-), aláhúzásjeleket (_) vagy perjeleket (/) is, amelyek jelzik a rendszerleíró adatbázison belüli szervezetet vagy csoportosítást.
- A kép nevében nem lehet szóköz karakter (szóköz vagy tabulátor).
A Docker érvénytelen hivatkozási formátum
Ha a Dockerfile vagy Docker parancs futtatásakor az „érvénytelen hivatkozási formátum” hibaüzenet jelenik meg, az azt jelenti, hogy az Ön neve nem felel meg a fenti szabályoknak.
Egy példa a képen látható:
$ docker pull BusyBoxHa a fenti parancsot futtatjuk, akkor a képen látható hibát ad vissza:
érvénytelen referencia formátum: az adattár nevének kisbetűsnek kell lennie
Ebben az esetben azt jelzi, hogy a képnév formátuma nem megfelelő, mivel a kép nevének mindig kisbetűnek kell lennie.
A Docker érvénytelen referenciaformátum-hibájának javítása
Ahogy sejtheti, az első módszer a kép referenciaformátumának megfelelőségének biztosítása. Ez magában foglalja a képnév érvényességének ellenőrzését.
Például a fenti parancsban kijavíthatjuk a hibát, ha a kép nevét a következőképpen adjuk meg:
$ sudo docker pull busybox: legfrissebb
Ebben az esetben a parancsnak a Busybox kép legújabb verzióját kell lekérnie.
2. módszer – Hosszú Docker-parancsok felosztása
Más esetekben előfordulhat, hogy „érvénytelen referenciaformátum” hibával találkozhat egy hosszú Docker-parancs futtatásakor.
Ilyen esetben jó gyakorlat a parancs több sorra osztása. A parancsfelosztás módja a shelltől és a rendszertől függ.
- A Bash shell esetén azonban használja a többsoros escape karaktert vagy a fordított perjelet (\).
- A PowerShell esetében használhatja a backtick karaktert (`).
- Végül, ha a Parancssorban van, használhat egy caret karaktert ^ néven
Például a Bash-on futtassa a parancsot a következőképpen:
$ sudo dokkoló épít \-azt \
foglaltság \
SH
A PowerShellben az alábbi módon futtathatja a parancsot:
$ sudo dokkoló épít `-azt `
busybox `
SH
És végül, ha a Parancssorban van, használja a parancsot a képen látható módon:
$ sudo docker build ^-azt ^
busybox ^
SH
3. módszer – ${pwd} ÉS $(pwd) elérési út
A hiba másik gyakori oka a ${pwd} változó használata. Ez ütközést okozhat, attól függően, hogy milyen típusú shell-en hajtja végre az említett parancsot.
PowerShell esetén a ${pwd} változót kell használnia a $(pwd) helyett.
Ahogy sejtheti, a Bash esetében a zárójeles formátumot használja a hajlított kapcsos bemenet helyett, mint $(pwd).
Következtetés
Ez a bejegyzés az „érvénytelen referenciaformátum” fő okait tárgyalta, amikor Dockerfile- vagy docker-parancsokkal dolgozik. Három fő módszert is megvizsgáltunk, amelyek segítségével kijavíthatja ezt a problémát.