web-dev-qa-db-ja.com

Dockerビルド中にプライベートリポジトリからDockerイメージをプルしますか?

Dockerハブの代わりにdocker build中にプライベートレジストリから画像をプルする方法はありますか?

プライベートレジストリをデプロイしましたが、DockerfileのFROM命令で特定のip:portを指定しないようにしたいと思います。デフォルトのレジストリを変更するには、docker buildオプションまたはdocker環境変数が必要でした。

17
Julio Guerra

私は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='' .
2
Matt L

イメージ名には、レジストリホストのFQDNを含める必要があります。したがって、FROM <some private image>を使用する場合は、FROM registry_Host:5000/foo/barと指定する必要があります。

将来的にはこれは必須ではなくなりますが、残念ながら今のところは必須です。

16
cpuguy83

Dockerの人々は通常、docker pull foo/bar同じことを取得します(つまり、foo/bar Docker Hubからのイメージ)。ローカル環境に関係なく。

これは、Dockerが明示的なホスト名/ポートなしで他のものを使用するために使用できるオプションがないことを意味します。

8
larsks