Wenn Sie ein Docker-Image auf Ihrem Entwicklungscomputer erstellt haben und es auf einem Server bereitstellen möchten, können Sie eine Docker-Registrierung verwenden, aber Docker verfügt auch über Tools zum Speichern von Images in Dateien und zum Laden dieser auf einem anderen Server.
Sie brauchen keine Containerregistrierung
Um einen Build eines Containers (als Image bezeichnet) auf einen Remote-Server zu übertragen, verwenden Sie normalerweise eine Docker-Container-Registrierung. Dies ist bei weitem die beste Methode – es ist eine zentrale Anlaufstelle, die es einfach macht, Updates auf mehrere Server zu verteilen. Dazu müssen Sie den Container auch nicht öffentlich machen; Es gibt viele großartige private Containerregistrierungen, wie z. B. GCR von Google und ECS von AWS. Der Docker Hub unterstützt sogar private Repositories. Wenn Sie sich nur Sorgen um den Datenschutz machen, wechseln Sie zu einer privaten Registrierung und verwenden Sie weiterhin docker push
und docker pull
.
Für diejenigen, die es jedoch auf die altmodische Weise tun möchten, enthält die Docker-CLI einige Tools zum Speichern von Bildern in Dateien und zum Laden dieser auf einen Remote-Server.
Um ein Bild zu speichern, können Sie docker save
verwenden , geben Sie eine Ausgabedatei an, und geben Sie dann einen Bildnamen und ein Tag an:
docker save -o ./savedimage imagename:tag
Wenn Sie kein Tag angeben, verpackt Docker alle Tags.
Dadurch wird eine Kopie des Bildes unter der Ausgabedatei serialisiert und gespeichert. Das Bild wird als Tarfile gespeichert. Wenn Sie es als tar.gz
speichern möchten , können Sie das -o
weglassen kennzeichnen und die Ausgabe an gzip
weiterleiten :
docker save imagename:tag | gzip > savedimage.tar.gz
Sie können dann diese Datei und scp
nehmen oder FTP-Kopie auf den Zielserver. Sobald es dort ist, können Sie docker load
verwenden erneut importieren:
docker load -i savedimage
Dadurch wird das Image auf dem Zielsystem verfügbar gemacht, als ob Sie docker build . -t imagename
. Sie können es wie ein lokal erstelltes Image mit docker container run
verwenden :
docker container run imagename