19

ドキュメントは言う:

イメージをビルドしてローカルの Docker サーバーに保存するには、次を使用します。

docker:publishLocal

私は Docker を使い始めたばかりで、「ローカル Docker サーバー」の概念に慣れていません。それは何ですか? の出力はどこで探すべきdocker:publishLocalですか?

4

2 に答える 2

32

Docker サーバー

Docker の主なコンポーネントについては、https ://docs.docker.com/introduction/understanding-docker/#what-are-the-major-docker-components で説明しています。

「Docker サーバー」と記載されているのは、リンク先の説明で「Docker デーモン」です。Docker デーモンはローカル マシンで実行され、通常、dockerバイナリによって実行されるコマンドの主要な連絡先になります。

Docker デーモンは、次のような多くのタスクを実行します。

  • コンテナの起動
  • コンテナーの停止
  • コンテナ ステータスのクエリ
  • イメージの構築 (コンテナーの「ファイルシステム」)
  • イメージを Docker インデックスまたは別のイメージ サーバーにプッシュする (ビルド マシンの外部からイメージを表示できるようにするため)
  • コンテナの管理、停止した場合の再起動

Docker アクションへのタスクの sbt-native-packager マッピング

パブリッシュローカル

SBT は、という名前のタスクを使用して、publishLocalアセットをローカルの Ivy/Maven リポジトリに公開します (これはマシンにのみ存在するものです)。

sbt-native-packager の Docker サポートは、Docker コンテキストで同じタスクを使用しようとするため、sbt docker:publishLocalローカルの Docker サーバーにイメージがビルドされます。ローカルで Ivy または Maven に公開するのと同じように、このアクションにより、イメージを開発用にローカルで表示できますが、ローカル マシンの外部では表示できません。

実際には、コマンドにマップされますdocker build -t "${projectName}:${version}"

その後、このイメージをdocker run "${projectName}:${version}"で使用できますが、ローカル マシンでのみ使用できます。

公開

SBT は、という名前のタスクを使用して、publishリモートの Ivy/Maven リポジトリにアセットを公開します。これには、イメージを公開する場所を記述するために、追加の構成が必要です。

また、sbt-native-packager は、このタスクを Docker コンテキストの適切なアクションにマップしようとします。そのため、プラグインはイメージをローカルでビルドし、続いてイメージを適切なリモート イメージ リポジトリにプッシュします。

これを機能させるには、設定を追加する必要がありdockerRepositoryます。

「username1」などのスラッシュなしの文字列に設定すると、イメージ名に「username1/」が追加されます。イメージをプッシュしようとすると、Docker は、"username1" のアカウントで、https: //registry.hub.docker.com/ にある公開 Docker レジストリーにイメージをプッシュしようとします。

「my.server1/username1」などのスラッシュを含む文字列に設定されている場合、その文字列もイメージ名に追加されます。これは前のケースと似ていますが、Docker サーバーは DNS で「my.server1」というサーバーを見つけようとし、パブリック Docker レジストリの代わりにそこにプッシュします。

実際には、それはにマッピングされます

docker build -t "${dockerRepository}/${projectName}:${version}" . // working directory at `target/docker/stage` docker push "${dockerRepository}/${projectName}:${version}"

その後、ローカル マシンまたは他のマシンからこのイメージを .xml で使用できますdocker run "${dockerRepository}/${projectName}:${version}"

ステージ

このstageタスクは、Docker デーモンに送信できる形式で、Docker イメージのすべてのファイルを含むディレクトリを作成します。このディレクトリはtarget/docker/stage. 作業ディレクトリを here に変更して を実行するとdocker build .、そのディレクトリの内容を使用してイメージがビルドされます。

于 2014-07-20T11:39:05.727 に答える