2016-05-25 26 views
7

Sto cercando di capire se è possibile leggere le proprietà dei metadati (Etichette, in particolare) di un contenitore usando uno script bash.Come accedere ai metadati di un contenitore finestra mobile da uno script eseguito all'interno del contenitore?

Per esempio, se c'è un Dockerfile come:

FROM busybox 
LABEL abc = abc_value1 

E, se io costruire e gestire un'immagine basata sul file di cui sopra, in questo modo:

docker build . -t image1 
docker run -ti image1 /bin/bash 

Esiste un modo accedere al valore dell'etichetta "abc" all'interno della shell bash? Se é cosi, come?

risposta

5

Per ottenere le etichette (e qualsiasi cosa dall'API remota), è possibile passare il socket nel contenitore e utilizzare curl> = 7.40 (è la versione minima che supporta il flag --unix-socket) all'interno del contenitore per accedere all'API remota tramite la presa:

Dockerfile:

FROM ubuntu:16.04 
RUN apt-get update \ 
    && apt-get install curl -y 
LABEL abc = abc_value1 

Compilare ed eseguire

docker build -t image1 . 
docker run -v /var/run/docker.sock:/var/run/docker.sock -it image1 /bin/bash 

Dall'interno del contenitore

curl --unix-socket /var/run/docker.sock http:/containers/$(hostname)/json 

Da qui avrete un pezzo enorme di JSON (simile a finestra mobile ispezionare). È quindi possibile utilizzare uno strumento CLI come jq per estrarre le etichette.

Tutte le informazioni sul sito web della finestra mobile: https://docs.docker.com/engine/reference/api/docker_remote_api/#/docker-remote-api

Tutto ciò che said-- questo non è molto sicuro, e le variabili di ambiente sono probabilmente una scommessa migliore.

Problemi correlati