2016-05-17 12 views
1

Ich würde gerne wissen, ob es eine Möglichkeit gibt, den Befehl "docker run", der einen Container gestartet hat, wiederherzustellen?Docker - Befehlszeile von einem Bild abrufen

Da ich einem gestoppten Container einige Parameter hinzufügen möchte, muss ich den ursprünglichen Befehl abrufen, meine neuen Parameter hinzufügen und starten.

Vielen Dank für Ihre Hilfe.

+0

Oder ist es eine Möglichkeit, eine Art zu tun: Docker Neustart - my-options-here

+0

Wie wäre es mit 'docker inspect '? – BMW

Antwort

1

Wenn Sie nur die Neustartrichtlinie ändern möchten, können Sie jetzt (in Docker Engine 1.11) docker-update verwenden.

# docker update --restart=unless-stopped containername 

Einige nützliche Informationen gibt es in der Ausgabe von Docker ps, insbesondere die Anschlusszuordnungen, zB:

Docker-Update kann entweder auf einem laufenden oder einem gestoppten Behälter finden Docker-update Mann, zum Beispiel angewendet werden
# docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS     NAMES 
75d1e6adbb37  my-fancy-image  "/usr/sbin/sshd -D" 22 hours ago  Up 22 minutes  0.0.0.0:8022->22/tcp fancy_torvalds 

Alle anderen Befehlszeilenparameter, die verwendet wurden, den Behälter zu beginnen in der Ausgabe von docker untersuchen, zum Beispiel zu finden:

# docker inspect containername 
    ... 
    "Path": "/usr/sbin/sshd", 
    "Args": [ 
     "-D" 
    ], 
    ... 
    "HostConfig": { 
     "Binds": [ 
      "/home/user/workspace/thing:/home/other/workspace/thing" 
     ], 
    ... 
     "PortBindings": { 
      "22/tcp": [ 
       { 
        "HostIp": "", 
        "HostPort": "8022" 
       } 
      ] 
     }, 
     "RestartPolicy": { 
      "Name": "unless-stopped", 
      "MaximumRetryCount": 0 
     }, 
    ... 

Wenn es nicht nur die Neustart-Richtlinie ist es, Sie wan Um Änderungen vorzunehmen (und Sie haben Anwendungsdaten in Ihrem Container) können Sie den Container als Bild speichern und ihn dann als neuen Container ausführen. Dies sollte keinen signifikanten zusätzlichen Speicherplatz belegen. Sie müssen es nicht zu einem Repository schieben:

# docker commit -m="Message" -a="Author Name" containername username/imagename:latest 
# docker run <new options here> username/imagename:latest 

Ich muss mich fragen, warum Sie das überhaupt tun wollen. Haben Sie alle Ihre Anwendungsdaten in demselben Container wie die Anwendung selbst, sodass Sie den Container nicht einfach löschen und einen neuen mit Ihren bevorzugten Optionen erstellen? Es gibt viele ausgezeichnete Diskussionen zu diesem Thema gefunden werden, insbesondere:

+0

Weil ich faul bin :) Nein, im Ernst, es ist nur eine Frage, die ich mir stelle, mit Blick auf einen Container, den ich einige Wochen zuvor mit einer langen langen Reihe von langweiligen Parametern gestartet habe, die ich nirgends gespeichert habe. Und ich möchte es nur mit einer Neustart-Richtlinie neu starten. Danke trotzdem;) –

+0

Fair genug. Sieht aus wie docker update ist die Sache für Sie - wenn Sie auf Motor 1.11 sind –