Dockerハブの代わりにdocker build
中にプライベートレジストリから画像をプルする方法はありますか?
プライベートレジストリをデプロイしましたが、DockerfileのFROM
命令で特定のip:port
を指定しないようにしたいと思います。デフォルトのレジストリを変更するには、docker build
オプションまたはdocker環境変数が必要でした。
私は2019年に同じ問題に直面していました。引数(ARG)を使用してこれを解決しました。
https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
引数を使用すると、FROM行で使用できるオプションのパラメーターを(デフォルトで)設定できます。
Dockerfile-project-dev
ARG REPO_LOCATION=privaterepo.company.net/
ARG BASE_VERSION=latest
FROM ${REPO_LOCATION}project/base:${BASE_VERSION}
...
私のユースケースでは、通常、プライベートリポジトリからプルしたいのですが、Dockerfileで作業している場合は、DockerfileのFROM行を変更せずに、自分のマシンのイメージからビルドできるようにしたい場合があります。 。ビルド時にDockerにローカルマシンでイメージを検索するように指示するには、次のようにします。
docker build -t project/dev:latest -f ./Dockerfile-project-dev --build-arg REPO_LOCATION='' .
イメージ名には、レジストリホストのFQDNを含める必要があります。したがって、FROM <some private image>
を使用する場合は、FROM registry_Host:5000/foo/bar
と指定する必要があります。
将来的にはこれは必須ではなくなりますが、残念ながら今のところは必須です。
Dockerの人々は通常、docker pull foo/bar
同じことを取得します(つまり、foo/bar
Docker Hubからのイメージ)。ローカル環境に関係なく。
これは、Dockerが明示的なホスト名/ポートなしで他のものを使用するために使用できるオプションがないことを意味します。