Dockerfile: LABEL în Docker

Dockerfile Docker 1.6+

Adaugă metadate cheie-valoare imaginii (versiune, autor, depozit sursă), vizibile cu docker inspect și folosite la filtrare.

Sintaxă comandă
LABEL <cheie>=<valoare> [<cheie>=<valoare>...]

Ce face Dockerfile: LABEL

Etichetele (labels) sunt perechi cheie-valoare salvate în configurația imaginii. Nu influențează rularea, dar ajută la organizare: afli din ce depozit și din ce commit provine o imagine, cine o întreține, sau filtrezi imaginile cu docker images --filter label=....

Pentru informațiile standard există chei definite de specificația OCI, cu prefixul org.opencontainers.image. (title, version, source, revision, authors). Etichetele se moștenesc din imaginea de bază și pot fi suprascrise. Instrucțiunea veche MAINTAINER este depreciată: folosește LABEL org.opencontainers.image.authors=....

Parametri

Parametru Descriere
LABEL cheie=valoare O etichetă; valorile cu spații se pun între ghilimele.
org.opencontainers.image.source Cheia OCI pentru adresa depozitului de cod.
org.opencontainers.image.version Cheia OCI pentru versiunea aplicației.
docker build --label k=v Adaugă etichete la build, fără să modifici Dockerfile-ul.
docker images --filter label=k=v Filtrează imaginile după etichetă.

Exemple

Exemplul 1: Etichete OCI completate la build

Versiunea și commit-ul vin din CI prin ARG.

FROM nginx:1.27-alpine
ARG VERSIUNE=dev
ARG COMMIT=necunoscut
LABEL org.opencontainers.image.title="Magazin Iasi - frontend" \
      org.opencontainers.image.version="$VERSIUNE" \
      org.opencontainers.image.revision="$COMMIT" \
      org.opencontainers.image.source="https://github.com/firma/magazin" \
      ro.firma.echipa="plati"
COPY dist/ /usr/share/nginx/html/

Exemplul 2: Citirea și filtrarea după etichete

Construim cu valori concrete, apoi citim o etichetă și listăm imaginile echipei.

docker build --build-arg VERSIUNE=2.4.0 --build-arg COMMIT=9f3c2ab -t magazin-frontend:2.4.0 .
docker inspect -f '{{index .Config.Labels "org.opencontainers.image.version"}}' magazin-frontend:2.4.0
docker images --filter "label=ro.firma.echipa=plati" --format '{{.Repository}}:{{.Tag}}'

Ieșire în terminal

2.4.0
magazin-frontend:2.4.0

Greșeli frecvente

  • Punerea de secrete în etichete (tokenuri, parole): etichetele sunt vizibile pentru oricine poate rula docker inspect pe imagine.
  • Folosirea cheilor fără prefix (versiune=1): pot intra în conflict cu etichetele moștenite din imaginea de bază. Folosește un prefix de domeniu inversat (ro.firma.) sau cheile OCI.

Comenzi înrudite

  • Dockerfile: VOLUME: Marchează un director din imagine ca punct de montare pentru date persistente; Docker creează automat un volum anonim dacă nu dai altul.
  • docker history: Afișează straturile unei imagini, cu instrucțiunea Dockerfile care a creat fiecare strat și mărimea lui.