LoginSignup
2
0

docker buildx buildを使ってdockerイメージをローカルに書き出したい

Last updated at Posted at 2023-08-15

docker buildx build を以前のdocker buildのようにして互換性あるように使いたい場合、

$ docker buildx build --output=type=docker -t ユーザー名/イメージ名:タグ名
# 省略形
$ docker buildx build --load -t ユーザー名/イメージ名:タグ名

でいけるようです。
つまずいたので、投稿しておきます。

[公式]単一プラットフォームの構築結果を docker images に読み込む(--load)

構築結果の出力方法を指定(-o, --output)
-o, --output=[PATH,-,type=TYPE[,KEY=VALUE]
build 結果の出力処理を設定します。 docker build で全ての構築が終わると、コンテナのイメージを作成し、それを docker images に出力します。 buildx ではこの手順が設定できるようになっており、処理結果を直接クライアントや、oci イメージ・tar ボールやレジストリ等に出力できます。

Buildx の docker ドライバが現時点でサポートしているのは、 local 、 tar ボール・エクスポータtarball exporter と イメージ・エクスポータimage exporter のみです。 docker-container ドライバは全てのエクスポータをサポートします。

docker
docker エクスポート型は、特定のプラットフォームに対する Docker イメージ仕様 のイメージとしてクライアント上に書き出します。このエクスポータによって作成される tar ボールは、 OCI 互換性もあります。

現時点では、マルチプラットフォーム・イメージは docker エクスポート型はでは出力できません。マルチプラットフォーム対応イメージの最も一般的な利用方法は、レジストリに直接送信する場合です( registry をご覧ください。)。

単一プラットフォームの構築結果を docker images に読み込む(--load)
--output=type=docker の省略形です。単一プラットフォーム向けの構築結果を docker images に読み込みます。

CI/CDにはdocker buildx build --pushを併用してdocker build ~docker pushをワンコマンドでできるようです。

$ docker buildx build --output=type=image,push=true -t ユーザー名/イメージ名:タグ名
# 省略形
$ docker buildx build --output=type=registory -t ユーザー名/イメージ名:タグ名
# さらに省略形
$ docker buildx build --push -t ユーザー名/イメージ名:タグ名

[公式]構築結果をレジストリに送信(--push)

registry
registry エクスポータは type=image,push=true の省略形です。

構築結果をレジストリに送信(--push)
--output=type=registry の省略形です。構築結果をレジストリに自動送信します。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0