18

Dockerfile を使用してサービスを作成している場合、人々がイメージを構築するために Dockerfile (およびリポジトリ) を配布するよりも、Dockerfile を使用してイメージを構築し、それをレジストリにプッシュすることをお勧めしますか?

Dockerfile+repo の配布に有利なユース ケースと、レジストリの配布に有利なユース ケースは何ですか?

4

4 に答える 4

10

同じ質問が、ソース コードとバイナリ パッケージのインストールに適用できると思います。

中央の共有レジストリにプッシュすることで、特定の構成を凍結して認定し、組織内の他のユーザーが利用できるようにすることができます。

于 2013-08-03T10:46:50.307 に答える
4

DevTableでは、当初、Docker イメージを生成するためにサーバーを展開したときに実行された Dockerfile を使用していました。Docker イメージがより複雑になり、依存関係が増えるにつれて、Dockerfile からイメージを生成するのに時間がかかるようになりました。私たちが本当に必要としていたのは、イメージを一度生成してから、完成した製品をサーバーにプルする方法でした。

通常、イメージをindex.docker.ioにプッシュすることでこれを達成しますが、世界に公開できない独自のコードがあります。Docker を中心にホストされた製品を構築することを計画している場合も、このような状況に陥る可能性があります。

このニーズにコミュニティで対応するために、Docker イメージのGithubを目指すQuayを構築しました。それをチェックして、それがあなたのニーズを解決するかどうか私たちに知らせてください.

于 2013-10-03T22:52:36.440 に答える
3

あなたのアプリケーションに少し依存すると思いますが、私はDockerfileを好むでしょう:

Dockerfile...

  • ... プロジェクトのルートにあると、ビルドと実行が非常に簡単になります。コマンドは 1 つだけです。
  • ...必要に応じて開発者が変更できます。
  • ... プロジェクトのビルド方法に関するドキュメントです
  • ...インターネット接続が遅い人に役立つ可能性のある画像と比較して非常に小さい
  • ... はコードと同じ場所にあるため、人々がコードをチェックアウトすると、コードが見つかります。

レジストリ内のイメージ...

  • ... すでにビルドされ、準備ができています!
  • ...維持する必要があります。新しいコードをコミットするか、アプリケーションを更新する場合は、イメージも更新する必要があります。
  • ...慎重に作成する必要があります: 構成を変更できますか? ログをどのように処理しますか? それはどれくらい大きいですか?イメージ内に NGINX をパッケージ化しますか、それとも外界の一部ですか? @Mark O'Connorが言ったように、特定の構成をフリーズしますが、それは他の誰かが使用したい構成ではないかもしれません。

これが、私が Dockerfile を好む理由です。Vagrantfile の場合も同様です。VM イメージではなく Vagrantfile が優先されます。ANT または Maven スクリプトでも同じです。パッケージ化されたアーティファクトではなく、ビルド スクリプトが優先されます (少なくともコードをプロジェクトに提供したい場合)。

于 2014-05-13T07:59:40.830 に答える