2016-05-25 5 views
7

私は、bashスクリプトを使用してコンテナのメタデータ(特にラベル)プロパティを読み取ることができるかどうかを理解しようとしています。例えばコンテナ内で実行されているスクリプトからドッカーコンテナのメタデータにアクセスする方法は?

、そこDockerfileが似ている場合:私は構築し、そうのように、上記のファイルに基づいて画像を実行する場合、

FROM busybox 
LABEL abc = abc_value1 

そして:

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

は、どのような方法がありますbashシェルの中の "abc"ラベルの値にアクセスするには?もしそうなら、どうですか?

答えて

5

ラベルを取得するには、コンテナ内にソケットを渡して、コンテナ内からcurl> = 7.40(それは--unix-socketフラグをサポートする最小バージョンです)を使用してリモートAPIにアクセスします

Dockerfile:ソケット経由

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

ビルドして実行し

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

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

容器の内側から

は、ここからは、(検査ドッカと同様)JSONの巨大な塊を持っています。 jqのようなCLIツールを使用して、ラベルを引き抜くことができます。

は、ドッキングウィンドウのウェブサイト上でより多くの情報を参照してください:https://docs.docker.com/engine/reference/api/docker_remote_api/#/docker-remote-api

これをsaid--そのすべてが非常に安全ではない、と環境変数は、おそらくより良い賭けています。

関連する問題