Ha még egy ideig dolgoztál Dockerrel, lefogadom, hogy találkoztál címkékkel. Gyakran úgy néznek ki, mint „my_image_name: 1”, ahol a kettőspont utáni részt tagként ismerjük. A címkéket nem mindig adják meg a képek címkézésekor, de ennek későbbre térünk ki.
Amióta elkezdtem használni a Dockert, nagyon megzavarodtam a címkékben. A dokumentáció nem nagyon magyarázza őket, és valóban nincsenek alapos magyarázatok a témához. Ezért döntöttem úgy, hogy megírom ezt a bejegyzést.
Mik azok a Docker-címkék?
Szóval, mi is pontosan a Docker címke? Egyszerű szavakkal, a Docker-címkék hasznos információkat közvetítenek egy adott képverzióról / -változatról. Ezek az álnevek az azonosító a kép, amely gyakran így néz ki: f1477ec11d12
. Ez csak a képre való hivatkozás módja. Jó hasonlat az, hogy a Git-címkék miként utalnak a történelem egy bizonyos elkötelezettségére.
A címkék két leggyakoribb esete a következő:
- Kép készítésekor a következő parancsot használjuk:
docker build -t username/image_name:tag_name .
Próbáljuk meg kicsomagolni, mit csinál ez a parancs egy kicsit. Azt mondjuk a Docker démonnak, hogy töltse le az aktuális könyvtárban található Docker fájlt (ezt .
teszi a végén a vége). Ezután azt mondjuk a Docker démonnak, hogy készítse el a képet, és adja meg a megadott címkét. Ha fut docker images
, akkor látnia kell egy képet, amelynek tárháza username/image_name
és címkéje van tag_name
.
username/image_name
nem kötelező formátum a kép nevének megadásához. Ez csak egy hasznos konvenció, amely elkerüli a kép újbóli címkézését, amikor be kell állítania a rendszerleíró adatbázisba.
A képed bármit megnevezhetsz, amit csak akarsz. A nyilvános Docker-nyilvántartás esetében a képek elnevezése során kétszintű hierarchiára van korlátozva. Például a képének nem lehet neve. a/b/c:1.
Ez a korlátozás általában nem létezik a privát nyilvántartásokban. Mint korábban említettük, nem kötelező megadnia a következőket tag_name.
: Hamarosan meglátjuk, mi történik ebben az esetben.
2. Egy kép kifejezett megcímkézése a tag
paranccsal.
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
Ez a parancs csak egy álnevet (referenciát) hoz létre annak a névnek a nevével, TARGET_IMAGE
amely az SOURCE_IMAGE.
Ennyit tesz. Ez olyan, mintha egy meglévő képhez más nevet rendelnénk, hogy hivatkozzunk rá. Figyelje meg, hogy a címke itt is meg van határozva opcionálisként [:TAG]
.
Mi történik, ha nem ad meg címkét?
Rendben, most derítsük ki, mi történik, ha egy kép címkézése közben nem ad meg címkét. Itt latest
jön a képbe a címke. Amikor egy képet explicit címke nélkül latest
címkéznek meg, alapértelmezés szerint a címkét kapják . Ez egy szerencsétlen névválasztás, amely sok zavart okoz. De szeretném úgy gondolni, mint az alapértelmezett címkét , amelyet a képek kapnak, ha nem ad meg ilyet.
Sok zavart latest
okoz a várakozás, hogy ez a kép legújabb verziója, különösen a Dockerfiles-ban. Vizsgáljuk meg a különböző forgatókönyveket egy példával:
1. forgatókönyv:
Tegyük fel, hogy a következő állítás szerepel a Dockerfile-ban:
FROM debian
Mivel nem adtunk meg címkét, a Docker hozzáadja a latest
címkét, és megpróbálja meghúzni a képet debian:latest
.
2. forgatókönyv:
FROM debian:9.3
Mivel a címkét itt kifejezetten megemlítjük, a Docker a 9.3 címkével ellátott Debian képet húzza
Egy másik dolog, amit szem előtt kell tartani, hogy nincs olyan szabály, amely kimondja, hogy a képnek csak egy címkével kell rendelkeznie. Egy képnek több címkéje lehet, és általában nagyobb és kisebb verziók megadására használják őket. Fontolja meg például ezt:

A bejegyzés megírásakor latest
a Debian kép címkéje a 9.3
kiadásra és a 9
kiadásra mutat. Ez a jövőben nagy valószínűséggel változni fog, ha a nagyobb vagy a kisebb verzió a képhez kerül.
Felhívjuk figyelmét, hogy a szemantikus verziókhoz használt címkéket szokás követni, de a címkéket nem csak erre a célra tervezték .
Összefoglalva, a legújabb nem egy különleges címke
A legfontosabb elvonás az eddigiekből az, hogy a legújabb olyan, mint bármely más címke . A fejlesztő feladata a képek megfelelő címkézése, amely latest
mindig a kép legújabb stabil kiadására mutat.
Ennélfogva a képek húzásakor nem határozunk meg kifejezetten címkét a Docker-fájljainkban, mivel az alapkép teljesen más verziójával rendelkezhetünk, mint amit korábban használtunk. Nincs garancia arra, hogy ez nagyobb vagy kisebb ütés lesz. Még egy régi kiadás is megcímkézhető latest
.
PS Ha tévhiteket / hibákat talált a bejegyzésben, nyugodtan tweeteljen nekem @ScribbingOn.
Köszönet Jérôme Petazzoninak, hogy segített nekem megérteni ezeket.