web-dev-qa-db-ja.com

Dockerビルドタグリポジトリ名

Dockerbuildコマンドを使用してdockerイメージを簡単にビルドできます。

私が疑問に思っているのは、イメージを作成するときに与えることができるtフラグです。例えば:

$ docker build -t ouruser/sinatra:v2 .

ドキュメントによると、tフラグはタグ付けと命名を目的としています。名前は「:」の前の部分であり、タグはその後の部分です。したがって、この例では、名前はouruser/sinatraであり、タグはv2です。

これが画像名とタグだと思いました。しかし、どうやら、名前は実際にはいくつかのリポジトリ名ですか?なぜだと思いますか?まあ、あなたがこのリストの後にコマンドで画像をリストするなら:

docker images

次のようなリストが表示されます。

REPOSITORY          TAG     IMAGE ID      CREATED        SIZE
ouruser/sinatra     latest  5db5f8471261  11 hours ago   446.7 M

バン!大きな衝撃!名前の付いたイメージを作成していると思い、代わりにリポジトリを指定しました。これに関連して、私はいくつかの質問があります:

  1. このリポジトリはどこにありますか?
  2. リポジトリを作成せずに画像に名前を付けることはできますか?
  3. このリポジトリはどこでどのように使用されますか、または使用できますか?
  4. このリポジトリに関する詳細情報はどこにありますか?私はこれを見つけただけで、正直に言うとあまりわかりません: docker build docs
  5. Somename/someothernameのような2つの部分で構成される名前を使用するのが一般的であるのはなぜですか?

ご協力ありがとうございました!

9
Ville Miekk-oja

ここでの混乱は「リポジトリ」という言葉だと思います。 Dockerでは、リポジトリは同じ名前のイメージのビルドのグループであり、場合によっては複数のタグがあります。 hub.docker.comや独自のプライベートレジストリなどの「レジストリ」サーバーは、複数のリポジトリを保持します。 パブリックレジストリのredisリポジトリ 。その1つのリポジトリには、ビルドのバージョンが異なる複数のタグがあります。

それで、その背景で、あなたの質問に答えるために:

  1. ouruser/sinatraは、docker Pushを実行するまで、ローカルのDockerホストにあります。
  2. いいえ、リポジトリとタグは画像の名前です。
  3. システム上でローカルである間、このイメージをローカルで使用できます。レジストリにプッシュアップしたら、そのレジストリにアクセスできる他のDockerホストにプルダウンできます。また、docker saveを実行すると、そのイメージをdocker load用に別のホストに保存できます。
  4. Docs.docker.comのどこかにこれをカバーするドキュメントがあると確信していますが、私はクラスから学びました。
  5. ユーザー名/イメージベース形式は、hub.docker.comで独自の名前空間へのプッシュをサポートするようになりました。それがないと、最初の「Redis」イメージを作成した人はそれを「redis」と呼び、次の人は「redis-improved」と呼ばれる独自のリポジトリを作成します。評判の良い画像です。ローカルで作成するイメージにはこの名前付けは必要ありませんが、hub.docker.comからプルするイメージは、Docker自体によって維持されている場合、ユーザー名が不足している可能性があるため、引き続き推奨されます。ユーザー名がないと、どの画像をプルダウンして、どの画像を自分で作成したかがわかりません。
16
BMitch