Ich frage mich, wo Docker Bilder genau in meinem lokalen Host-Rechner gespeichert sind. Kann ich mein Docker-Bild ohne die Docker-Hub
oder Dockerfile
teilen, aber das 'echte' Docker-Image? Und was passiert genau, wenn ich mein Docker-Image auf den Docker-Hub "schiebe"?Wie teile ich mein Docker-Image ohne den Docker-Hub?
Antwort
Docker-Images werden als Dateisystemebenen gespeichert. Jeder Befehl in der Dockerfile erstellt eine Ebene. Sie können auch Layer erstellen, indem Sie docker commit
über die Befehlszeile eingeben, nachdem Sie einige Änderungen vorgenommen haben (wahrscheinlich über docker run
).
Diese Layer werden standardmäßig unter /var/lib/docker
gespeichert. Während Sie (theoretisch) Dateien von dort auswählen und in einem anderen Docker-Server installieren könnten, ist es wahrscheinlich eine schlechte Idee, mit der von Docker verwendeten internen Darstellung zu spielen.
Wenn Sie Ihr Image pushen, werden diese Layer an die Registrierung (standardmäßig die Docker-Hub-Registrierung ... sofern Sie Ihr Image nicht mit einem anderen Registrierungspräfix versehen) gesendet und dort gespeichert. Beim Drücken wird die Layer-ID verwendet, um zu überprüfen, ob Sie die Ebene bereits lokal haben oder heruntergeladen werden müssen. Sie können docker history
verwenden, um zu sehen, welche Layer (andere Images) verwendet werden (und bis zu welchem Grad der Befehl den Layer erstellt hat).
Wie bei den Optionen ein Bild zu teilen, ohne auf die Docker Hub Registry zu drängen, die besten Optionen sind:
docker save
ein Bild oderdocker export
einen Behälter. Dadurch wird eine TAR-Datei auf die Standardausgabe ausgegeben. Sie möchten also etwas wiedocker save 'dockerizeit/agent' > dk.agent.lastest.tar
machen. Dann können Siedocker load
oderdocker import
in einem anderen Host verwenden.Hosten Sie Ihre eigene private Registrierung. - Veraltet, siehe Kommentare
Siehe docker registry image. Wir haben eine s3 backed registry gebaut, die Sie starten und stoppen können, wie es nötig ist (der gesamte Status wird auf dem s3-Bucket Ihrer Wahl gehalten), was einfach zu installieren ist. Dies ist auch eine interessante Art und Weise zu beobachten, was passiert, wenn Pushing zu einer RegistrierungVerwenden Sie eine andere Registrierung wie quay.io (Ich habe es nicht persönlich ausprobiert), obwohl was auch immer Sie mit dem Docker Hub haben wird wahrscheinlich gelten auch hier.
Für zukünftige Referenz ist der Link zum Docker Registrierungsbild veraltet. Sie sollten nun [Docker Registry 2.0] (https://docs.docker.com/registry/) und den Code auf [github/docker/distribution] (https://github.com/docker/distribution) verwenden. – RoelAdriaans
I ' Ich bin nicht sicher, es ist klar, dass Registry 2.0 ein gebrauchsbereiter Ersatz für den ursprünglichen ist. Es scheint einige grundlegende Funktionalität wie Suche zu vermissen http://stackoverflow.com/questions/30113726/docker-registry-2-0-api-v2 – JoshRivers
Frage über 'docker save': wenn ich ein Bild schiebe, das von einem anderen ableitet image (sagen wir "Python: 2.7") in einer Registry, muss das übergeordnete Image nicht mehr als einmal hochgeladen werden, es sei denn, es ändert sich. Kann ich Teilbilder speichern, um eine ähnliche Optimierung der Dateigröße zu erreichen? Ich spring durch diese Reifen, weil ich ein Bastler mit mehreren Bildern bin und ich nicht für eine private Registrierung bezahlen will. – Pieter
Wenn Sie nicht über die Docker Hub verwenden möchten selbst, können Sie Ihre eigenen Docker Repository unter Artifactory von JFrog Gastgeber:
https://www.jfrog.com/confluence/display/RTF/Docker+Repositories
, die auf Ihrem eigenen Server läuft dann (s).
Andere Hosting-Anbieter zur Verfügung, zB CoreOS:
http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/
die Kai gekauft.
ioBasierend auf this blog die folgenden Befehle ausgeführt wurden:
docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0
kopieren Sie das Bild an einen Server, und Import ist wie folgt:
docker load --input latestversion-1.0.0.tar
- 1. Dockerhub Automated Builds Tagging
- 2. Wie teile ich mein jar-Dienstprogramm nur mit ausgewählten Buddies?
- 3. Logischer Fehler oder überspringt mein Programm Teile?
- 4. Wie teile ich den Inhalt meiner Website auf Facebook
- 5. Erhalten url Teile ohne Host
- 6. Wie teile ich einen Cookie mit PHP
- 7. Wie teile ich den gemeinsamen Code zwischen Rust-Projekten, ohne ihn auf crates.io zu veröffentlichen?
- 8. Schreiben von Dockerfile für Dockerhub Automatisierte Builds
- 9. Angular2 - Wie teile ich Daten/wechsle zwischen den Komponenten?
- 10. Wie teile ich den Link via Twitter in Android?
- 11. Wie teile ich verschiedene URLs über den uiactivityviewcontroller?
- 12. Reactjs: Wie teile ich einen Websocket zwischen den Komponenten?
- 13. MAKROS - Wie teile ich und dann Runde
- 14. Wie teile ich ein Wiki
- 15. Wie teile ich Code zwischen zwei Projekten?
- 16. Wie teile ich mein Modul über mehrere Dateien in Typescript mit node.js
- 17. Teile Daten zwischen den Diensten
- 18. Wie teile ich in der Linux-Konsole?
- 19. Wie lösche ich ~ ohne mein Heimatverzeichnis zu löschen?
- 20. Wie führe ich mein Programm ohne ./a.out Befehl aus?
- 21. Wie summiere und teile ich in MySql
- 22. Wie repariere ich mein Makefile?
- 23. Wie teile ich Dateien zwischen Grunt-Zielen?
- 24. Wie kann ich den Status einer Site speichern, ohne mein eigenes Datenbank-Backend zu implementieren?
- 25. Wie teile ich Daten in verschiedenen Klassen
- 26. Wie teile ich diese Zeichenfolge (Java)?
- 27. Wie teile ich Regex mit Variablenwerten auf?
- 28. Xamarin portable library - Wie teile ich Klassen?
- 29. Wie dokumentiere ich Klassen ohne den Modulnamen?
- 30. Wie teile ich Verzeichnisse zwischen Git-Zweigen?
Für die Zukunft: einen guten Artikel auf [ Bewegen Docker Bilder um] (https://blog.giantswarm.io/moving-docker-container-images-around/) – Mifeet