2014-12-28 13 views
5

Ich kann nicht finden, eine Definition von genau zu finden, was ein Docker-Repository ist. Der allgemeine Ansatz zur Kennzeichnung scheint Benutzername/Bildname zu sein.Was genau ist ein Docker-Repository?

Natürlich enthält es Docker Bilder aber müssen sie verschiedene Versionen des gleichen Bildes sein oder können sie unterschiedliche Docker Bilder sein?

Zum Beispiel, könnte ich App1, App2, ... im selben Docker-Repository behalten und einfach Etiketten verwenden, um sie zu unterscheiden.

+0

Nur um pedantisch zu sein; Repositories speichern _images_, nicht _containers_. –

+0

Danke @AdrianMouat Sie haben Recht. Ich war schlampig in meinem Sprachgebrauch. Ich habe bearbeitet und korrigiert. –

Antwort

2

Ich glaube, die Antwort ist, dass ein Docker-Repository eine markierte Reihe von Versionen eines Bildes ist.

Obwohl es technisch möglich ist, dass sie semantisch unterschiedliche Bilder sind, wird der Unterschied vielleicht durch die Bezeichnung gekennzeichnet, 1) verwirrend, weil sie alle denselben Bildnamen haben (verwirrend für Menschen und Software, die die Bilder verwendet)), und 2) nicht so weit ich die Absicht der Verwendung der Repositories, und 3) wahrscheinlich im Gegensatz zu dem Geschäftsmodell für die Docker Hub gehostet Registrierung für öffentliche und private Repositories.

Es war nie meine Absicht zu versuchen, dieses Geschäftsmodell zu brechen, ich war nur etwas verwirrt, da der Begriff Repository oft etwas allgemeineres bedeutet als nur eine einzige konzeptionelle Einheit. Docker bietet die Möglichkeit, Ihre eigenen Registrys, die viele Repositories enthalten, privat zu hosten.

+1

Es hätte geholfen, wenn die Docker-Dokumentation empfohlen hätte, dass ein Repository nur 1 Dockerfile enthalten sollte. Dann erklärte er, dass das Repository auf alle verschiedenen Bilder (Versionen) verweist, die aus dieser Docker-Datei erstellt wurden. – b01

2

Per Konvention werden die Docker-Bilder als <owner>/<application>:<tag> bezeichnet. Es gibt keine technische Einschränkung, wenn Sie verschiedene Anwendungen unter demselben Repository aufbewahren möchten (d. H. Es müssen keine anderen Tags verwandt werden, es sei denn, Sie erzwingen diese Beziehung), und Sie können beispielsweise mycompany/myuser:app1 und mycompany/myuser:app210 haben. Aber das ist nicht die Art, wie Sie die meisten öffentlichen Bilder finden werden, die wie zuvor beschrieben markiert sind.

+0

Danke. Ich schätze, das einzige Problem ist, dass es nur ein "spätestes" gibt, also müssten wir für jeden Container spezifisch Label angeben. –

1

Nach Docker Doc,

Eine Registrierung ist eine Sammlung von Repositories, und ein Repository ist eine Sammlung von Bildern - wie eine Art GitHub-Repository, mit Ausnahme der Code bereits eingebaut ist.

Die Notation für die Zuordnung eines lokalen Images zu einem Repository in einer Registrierung lautet username/repository: tag.

Das Tag: ist optional, wird aber empfohlen; Es ist der Mechanismus, den Registrierungsstellen verwenden, um Docker-Images eine Version zu geben. Also, alles setzen, die zusammen, Ihren Benutzernamen eingeben, und Repo- und Tag-Namen, so dass Ihr vorhandenes Bild wird zu Ihrem gewünschten Ziel hochladen:

docker tag friendlyhello username/repository:tag

Ich finde auch, das Wort mit der Repository ein bisschen in diesem Zusammenhang verwirrend. Am Ende soll das Repository alle Versionen eines Bildes enthalten, wobei das Tag das letzte ist, das verwendet wird, um das Bild zu bestimmen, das gezogen wird, wenn kein Tag angegeben wird, wenn der docker pull Befehl verwendet wird.