⛳
Docker image に OCI で定義されているラベルをつける
Dockerの大きな利点の一つとして、個々のコンテナ環境自体をリソースとみて URI が振られているため、どこからでも upload/download が可能という点があります。しかしこのままでは識別出きるだけで、それがどんなコンテナであるかはわかりませんね?
Dockerfile の仕様には LABEL
というコマンドがあります
LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
これによりイメージにメタ情報をつける事が出来ますが、これは名前空間 (com.example
のようなやつ) と KEY=VALUE
であることしか要請しないため、自分でラベルをつけて自分で使う分には使えますが、他のプロジェクトと連携しようとしたときに困ります。
そこで Open Container Initiaive (OCI) が定義している共用のラベルがあります たくさんあるので一部だけ取り上げますが、例えば rustmath/mkl-rust のコンテナに対しては
LABEL org.opencontainers.image.authors="Toshiki Teramura <toshiki.teramura@gmail.com>"
LABEL org.opencontainers.image.url="https://github.com/rust-math/intel-mkl-src"
LABEL org.opencontainers.image.documentation="Rust with Intel (R) MKL"
LABEL org.opencontainers.image.source="https://github.com/rust-math/intel-mkl-src/blob/master/docker/Dockerfile"
LABEL org.opencontainers.image.version="0.1.0"
のようにつける事が出来ます。これで OCI の仕様にしたがっている事を想定している別のプロジェクトと連携する事ができます。
Discussion