2016-06-14 9 views
3

Man kann leicht Docker Bilder durch Docker bauen Befehl erstellen.Docker Build Tag Repository-Name

Was ich frage mich ist die t-Flagge, die Sie beim Erstellen des Bildes geben können. Beispiel:

$ docker build -t ouruser/sinatra:v2 . 

Gemäß der Dokumentation dient das Flag t zum Kennzeichnen und Benennen. Name ist der Teil vor ':', und Tag ist der Teil nach ':'. In unserem Beispiel lautet der Name ususer/sinatra und das Tag ist v2.

Ich dachte, das wäre der Bildname und das Tag. Aber anscheinend ist der Name tatsächlich ein Repository-Name? Warum denke ich, dass es ist? Nun ja, denn wenn Sie sich nach dieser Liste der Bilder mit dem Befehl:

docker images 

Sie würden eine Auflistung wie diese:

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

Bang! Großer Schock! Sie dachten, Sie würden ein Bild mit Namen erstellen und stattdessen ein Repository angeben! In Verbindung damit habe ich einige Fragen:

  1. Wo befindet sich dieses Repository?
  2. Kann ich das Bild benennen, ohne ein Repository zu erstellen?
  3. Wo und wie wird dieses Repository verwendet oder könnte es verwendet werden?
  4. Wo finde ich weitere Informationen zu diesem Repository? Ich fand das nur und es sagt nicht viel um ehrlich zu sein: docker build docs
  5. Warum ist es üblich, Namen zu verwenden, die aus zwei Teilen bestehen: somename/someothername?

Vielen Dank für Ihre Hilfe!

+0

Dies ist keine Programmierfrage. Versuchen Sie, auf ServerFault zu fragen. – BadZen

+0

Entschuldigung :(. Muss auch dort fragen mm .. –

Antwort

8

Ich glaube, die Verwirrung hier ist das Wort "Repository". In Docker ist ein Repository eine Gruppe von Builds eines Images mit demselben Namen und möglicherweise mehreren Tags. Ein "Registry" -Server, wie hub.docker.com oder Ihre eigene private Registry, hält mehrere Repositories, z.B. die redis repository on the public registry. Dieses Repository hat mehrere Tags für verschiedene Versionen des Builds.

Also mit diesem Hintergrund, Ihre Fragen zu beantworten:

  1. ouruser/sinatra auf Ihrem lokalen Docker Host befindet, bis Sie ein tun docker push
  2. Nein, das Repository und der Tag ist der Name der Bild.
  3. Während lokal auf Ihrem System können Sie dieses Bild lokal verwenden. Sobald Sie es in eine Registrierung übertragen haben, können Sie es auf einen anderen Docker-Host herunterziehen, der Zugriff auf diese Registrierung hat. Und wenn Sie eine docker save machen, können Sie das Bild für eine docker load auf einem anderen Host speichern.
  4. Ich bin sicher, dass es eine Dokumentation ist dies irgendwo auf docs.docker.com bedeckt, aber ich aus einer Klasse gelernt.
  5. Das Format username/imagebase kam, um die Übertragung auf Ihren eigenen Namespace in hub.docker.com zu unterstützen. Ohne das, wer das erste "Redis" Bild macht, nennt es "redis", während die nächste Person ihr eigenes Repository namens "redis-enhanced" erstellt, und wir geraten schnell in ein Wirrwarr verwirrender Namen, in denen nicht klar ist, wer was gemacht hat und was ist ein seriöses Bild.Diese Namensgebung ist für Bilder, die Sie lokal erstellen, nicht erforderlich, wird aber dennoch unterstützt, da Bilder, die Sie von hub.docker.com abrufen, möglicherweise keinen Benutzernamen haben, wenn sie von Docker selbst verwaltet werden. Ohne Ihren Benutzernamen wissen Sie nicht, welche Bilder Sie heruntergeladen und welche Sie selbst erstellt haben.
+0

Es lohnt sich für 5) die ähnliche 'server [: port]/repo: tag' wird für [Bilder in eine private Registry geschoben] (https://docs.docker.com/engine/reference/commandline/tag/#tag-an-image-for-a-private-repository). Beispiel: '192.168.1.1: 5000/Mein-Bild: v3' – TemporalWolf