Ich versuche, einen Docker-Container von einem Computer zu nehmen und auf einem anderen auszuführen. Dabei tritt der folgende Fehler auf: " Fehlerantwort vom Dämon: Es wurde kein Befehl angegeben ".
Unten sehen Sie ein vereinfachtes Beispiel, das das Problem zeigt:
docker --version
Docker version 1.10.1, build 9e83765
docker pull ubuntu
docker run --name u1 -dit ubuntu:latest
docker export -o exported u1
docker stop u1
docker rm u1
docker import exported ubuntu:imported
docker run --name u1 -dit ubuntu:imported
docker: Error response from daemon: No command specified.
In diesem Beispiel ziehen wir zuerst ein Image (Ubuntu) und erstellen / starten daraus erfolgreich einen Container u1
. Dann exportieren wir diesen Container in eine Datei ( exported
), stoppen / entfernen den Container, importieren die Datei in ein neues Image ( ubuntu:imported
) und versuchen, daraus einen neuen Container zu erstellen . Es schlägt fehl.
docker inspect imagename:tagname
das Original mit dem importierten vergleichen. Ich hatte kein Glück mitimport
/export
und--change
obwohl mitsave
/ alles gut funktioniertload
.Beim Versuch, Docker zu exportieren und zu importieren, ist dieser Fehler aufgetreten
microsoft/mssql-server-linux
.https://hub.docker.com/r/microsoft/mssql-server-linux/
Befehle zum Exportieren und Importieren:
Der Befehl zum Ausführen wurde jedoch nicht gefunden. Die Lösung bestand darin, alle Container auf der exportierenden Maschine aufzulisten und den ausgeführten Befehl zu überprüfen.
Von dort konnten wir herausfinden, wie man den richtigen Befehl ausführt:
quelle
Beim Exportieren eines Containers ging der eigene Verlauf verloren, der Bildebenen und Metadaten enthält. Ihr Container hat also seine PID-Zustände verloren.
Jeder Container sollte einen ersten (Root-) Prozess haben. Sie überschreiben den Standard-Entypoint in der Docker-Datei als Bash. [bearbeitet] Ich denke, auch Sie überschreiben es nicht verwendet Standard, nicht in Ubuntu Basis-Image definiert. Beginnen Sie den ersten Vorgang mit dem Befehl cmd. Ich denke es gibt keinen Bug. Es ist eine Dockerfile-Funktion für die Wiederverwendbarkeit.
quelle
Mit diesen zusätzlichen Schritten funktioniert es:
Erstellen Sie Dockerfile wie folgt:
Neues Image erstellen:
Jetzt läuft es:
Es ist jedoch immer noch unklar, warum das einfache Exportieren und anschließende Importieren von Bildern nicht sofort funktioniert. Ist das ein Bug?
quelle
Mit dem
docker load
Befehl können Sie Bilder aus der Archivdatei laden. Dieser Befehl importiert Bilddatei und Argumente zusammen.quelle
docker load
unddocker save
operiere auf Container-Images (aus denen Container erstellt werden), währenddocker import
unddocker export
operiere auf Container.