0

イメージの継承は通常、docker の from コマンドなどを使用して行われます。

from centos7:centos7 

私の場合、ベース イメージ ビルダーとして使用したい Dockerfile があり、そのファイルをカスタマイズする 2 つのサブ dockerfile があります。

元の dockerfile をコンテナーとして dockerhub にコミットしたくないので、たとえば、次のようにします。

Dockerfile
slave/Dockerfile
master/Dockerfile

slave/Dockerfile は次のようになります。

from ../Dockerfile

これ(または同様のもの)は可能ですか?または、最上位の Dockerfile を実際にコンテナーに変換し、それを dockerhub イメージとしてコミットしてから、docker FROMディレクティブを使用して活用する必要がありますか。

4

1 に答える 1

3

イメージをベース イメージとして使用できるようにするために、イメージを dockerhub にプッシュする必要はありません。ただし、ローカルの docker リポジトリに保存されるように、ローカルでビルドする必要があります。次のような相対パスに基づくベース イメージとしてイメージを使用することはできません../Dockerfile。ローカル リポジトリに存在する他のイメージ ファイルに基づいて独自のイメージを作成する必要があります。

ベース イメージで次のものを使用するとします ( 内Dockerfile)。

FROM        centos7:centos7
// More stuff...

そして、ビルドするときは、次を使用します。

docker build -t my/base .

ここで何が起こるかというと、イメージcentos7:centos7は dockerhub からダウンロードされます。次に、イメージmy/baseがビルドされ、ローカル リポジトリに (バージョン管理なしで) 保存されます。次のようなバージョン情報を提供するだけで、docker コンテナーにバージョン管理を提供することもできます。

docker build -t my/base:2.0 .

上記の例のようにイメージがビルドされると、FROMそれを -image として使用して、少なくとも同じマシン (同じローカル リポジトリ) で他のサブイメージをビルドできます。したがって、サブイメージでは次を使用できます。

FROM        my/base

基本的に、どこにでもプッシュする必要はありません。すべてのイメージは、マシン上にローカルに存在します。ただし、以前にビルドされた基本イメージなしでサブイメージをビルドしようとすると、エラーが発生します。

ビルドとタグ付けの詳細については、次のドキュメントをご覧ください。

于 2014-12-30T21:24:58.403 に答える