2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker buildx を proxy 環境で実施する

Last updated at Posted at 2021-08-05

これは何?

docker buildx を proxy 環境化で行う方法です。

2021/8/5現在、Docker Desktop for Windows の proxy 設定 に記載した設定は, buildx に引き継がれません。たぶん。

結論

proxy が http://hogehoge.com:8080 の環境で、 カレントディレクトリの Dockerfile を使って piyo ビルドすると以下のようになります。

docker buildx create --use --driver-opt env.http_proxy=http://hogehoge.com:8080 --driver-opt env.http_proxy=http://hogehoge.com:8080
docker buildx build --build-arg http_proxy=http://hogehoge.com:8080 --build-arg https_proxy=http://hogehoge.com:8080 -t piyo .

Windows の Docker version 20.10.7 で, --platform linux/arm64 向けビルドで動作確認しました.
ビルドは、この記事の設定でできますが、 private registry への push はできません。。。
Buildx don't push image on private registry

詳細

buildx は, moby が配布する builder image を使って docker image をビルドします. この builder image は proxy 設定がなされておらず、また host の proxy が反映されません。そのため、docker buildx build を実行すると image の pull で proxy が使われません。

buildx new builder do not use proxy settings of default docker daemon での議論をみると、 --driver-opt で builder の環境変数を設定できるので、これを使います。

また、Dockerfile に記載している RUN コマンドは、ビルド対象の docker image コンテナの環境のうえ、HOST の設定が引き継がれないので、 builder image の設定は反映されません。ですので、 buildx build で --build-arg を使って proxy 設定をします。

雑感

builder image 独自にあつらえれば、build の引数無しでいけると思います。 private registry への push も、認証情報を独自 builder image に入れ込めば大丈夫と思います。

具体的には、builder image の /root/.docker/config.json に proxy を入れれば良いと思います。 認証情報も入れられれば、 private registry に push できる気もします。

参考

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?