アタッチメント付きイメージのビルド
このステップでは、Docker イメージをビルドし、メタデータをアタッチする方法を学びます。アタッチメントは、ビルドの出所 (provenance)、ソフトウェア部品表 (SBOM)、その他の関連データなど、追加情報をイメージに含める方法です。
まず、シンプルな Dockerfile を作成しましょう。まだ~/project
ディレクトリにいない場合は移動します。
cd ~/project
次に、nano
エディタを使用してDockerfile
という名前のファイルを作成します。
nano Dockerfile
Dockerfile
に以下の内容を追加します:
FROM alpine:latest
CMD ["echo", "Hello, Docker Attachments!"]
この Dockerfile は非常にシンプルです。ベースイメージとしてalpine:latest
を使用し、コンテナ起動時にメッセージを表示するコマンドを定義しています。
ファイルを保存し、nano
を終了します(Ctrl + X
、次にY
、そしてEnter
を押します)。
次に、イメージにアタッチするファイルを作成します。attachment.txt
という名前のシンプルなテキストファイルを作成しましょう。
nano attachment.txt
attachment.txt
に以下のような内容を追加します:
This is an example attachment for the Docker image.
It can contain any relevant metadata.
ファイルを保存し、nano
を終了します。
ここで、Docker イメージをビルドし、attachment.txt
ファイルをアタッチします。docker build
コマンドに--attest
フラグを使用します。--attest
フラグは、イメージビルドに含めるアタッチメントを指定できます。フォーマットはtype=type,dest=destination,src=source
です。
今回は、タイプとしてtype=sbom
(Software Bill of Materials)、アタッチメント内の宛先パスとしてdest=/sbom/attachment.txt
、ローカルファイルシステムのソースファイルとしてsrc=attachment.txt
を使用します。また、イメージにmy-attached-image:latest
というタグを付けます。
ビルド前に、必要な buildx プラグインがインストールされていることを確認してください。インストールされていない場合は必要になるかもしれませんが、基本的なアタッチメントの場合は組み込みのビルダーで十分です。
イメージをビルドしましょう:
docker build -t my-attached-image:latest --attest type=sbom,dest=/sbom/attachment.txt,src=attachment.txt .
コマンド末尾の.
はビルドコンテキスト(現在のディレクトリ~/project
)を指定しています。
イメージがビルドされ、アタッチメントが処理されていることを示す出力が表示されるはずです。
ビルドが完了したら、ローカルイメージをリスト表示してイメージが作成されたことを確認できます。
docker images
リストにmy-attached-image
が表示されるはずです。