2016-05-25 9 views
7

Próbuję zrozumieć, czy możliwe jest odczytanie metadanych (Etykiety, w szczególności) właściwości kontenera przy użyciu skryptu bash.Jak uzyskać dostęp do metadanych kontenera dokowanego ze skryptu uruchomionego w kontenerze?

Na przykład, jeśli istnieje Dockerfile jak:

FROM busybox 
LABEL abc = abc_value1 

A jeśli ja zbudować i uruchomić obraz na podstawie pliku powyżej, jak tak:

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

Czy istnieje jakiś sposób, uzyskać dostęp do wartości etykiety "abc" w powłoce basha? Jeśli tak to jak?

Odpowiedz

5

Aby uzyskać etykiety (i cokolwiek ze zdalnego interfejsu API), można przekazać gniazdo do kontenera i użyć curl> = 7.40 (jest to minimalna wersja, która obsługuje flagę --unix-socket) z poziomu kontenera, aby uzyskać dostęp do zdalnego interfejsu API poprzez gniazda:

Dockerfile:

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

zbudować i uruchomić

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

Od wewnątrz pojemnika

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

Stąd będziesz mieć ogromny kawał JSON (podobny do Docker wglądu). Następnie można użyć narzędzia CLI, takiego jak jq, aby wyodrębnić etykiety.

Zobacz więcej informacji na stronie internetowej Döcker za: https://docs.docker.com/engine/reference/api/docker_remote_api/#/docker-remote-api

Wszystko to said-- nie jest to bardzo bezpieczne i zmienne środowiskowe są prawdopodobnie lepiej postawić.

Powiązane problemy