So verpacken und übertragen Sie Docker-Images von einem Server auf einen anderen

0
41

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 bietet auch Tools zum Speichern von Bildern in Dateien und zum Laden auf einen anderen Server.

Sie brauchen keine Container Registry

Um einen Build eines Containers (als Image bezeichnet) auf einen Remoteserver zu übertragen, verwenden Sie normalerweise eine Docker-Containerregistrierung. Dies ist bei weitem die beste Methode – es ist eine zentrale Stelle, 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 Container-Registrys, wie GCR von Google und ECS von AWS. Der Docker Hub unterstützt sogar private Repositorys. Wenn Sie sich nur um den Datenschutz sorgen, wechseln Sie zu einer privaten Registry 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 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.< /p> Werbung

Dadurch wird eine Kopie des Bilds in der Ausgabedatei serialisiert und gespeichert. Das Bild wird als Tarfile gespeichert. Wenn Sie es als tar.gz speichern möchten, können Sie das Flag -o weglassen und die Ausgabe an gzip weiterleiten:

docker save imagename:tag | gzip > savedimage.tar.gz

Sie können diese Datei dann mit scp oder per FTP auf den Zielserver kopieren. Sobald es dort ist, können Sie es mit docker load wieder importieren:

docker load -i savedimage

Dadurch wird das Image auf dem Zielsystem verfügbar gemacht, als ob Sie docker build ausgeführt hätten. -t Bildname. Sie können es wie ein lokal erstelltes Image mit docker container run verwenden:

docker container run imagename