2016-05-13 17 views
2

In meinem Setup starten wir Docker Container mit Amazon ECS Infrastructure. Ich kenne die EC2-Maschine (Host), auf der das Andockfenster läuft, und kann die Container-ID sehen.docker Befehl von der laufenden docker/Prozess

Mit diesen Informationen kann ich sowieso herausfinden, wie der Docker-Befehl verwendet wurde, um den Container auszuführen?

Für z.B.

$ sudo docker ps 
CONTAINER ID  IMAGE                COMMAND    CREATED    STATUS    PORTS      NAMES 
d02739ac9a59  dockerhub.amazonaws.com/something "/script.sh" 32 minutes ago  Up 32 minutes         ecs-production 
cf47d404c6ba  amazon/amazon-ecs-agent:v1.7.1          "/agent"   About an hour ago Up About an hour 127.0.0.1:51678->51678/tcp ecs-agent 

Ich habe dies. Ich will wissen, was war die

sudo docker run <various configuration parameters> 
+1

Sie können 'sudo docker inspect ' ausführen, um die Details anzuzeigen. –

Antwort

3

Wie in this discussion erwähnt:

Sie werden nicht den genauen vollständigen Befehl einschließlich den Mengen erhalten, Portzuordnungen und andere Optionen übergeben von Docker in einer Inspektion ausführen, um Docker einzelne Zeile.
Sie müssen diese Informationen aus dem von docker inspect zurückgegebenen JSON extrahieren und den verwendeten vollständigen docker-run-Befehl einrahmen.

Zum Beispiel this gist suggests:

# Convert an existing docker container into a "docker run" command line. 
# 
# This is useful when trying to debug containers that have been created 
# by orchestration tools. 
# 
# Install jq: stedolan.github.io/jq/ 

function format_run() { 
    cid=$1 

    json=$(docker inspect $cid 2>&1) 

    # parse container info 
    entrypoint=$( echo $json | jq -r '.[0].Config.Entrypoint | join(" ")'   ) 
    envvars=$( echo $json | jq -r '(.[0].Config.Env | [" -e " + .[]] | join(""))' ) 
    image=$(  echo $json | jq -r .[0].Image          ) 
    cmd=$(  echo $json | jq -r '.[0].Config.Cmd | join(" ")'     ) 

    echo "docker run --entrypoint $entrypoint $envvars $image $cmd" 
} 

Das ist noch unvollständig: Sie würden auch brauchen:

  • {{.VolumesFrom}}
  • {{.Volumes}}
  • {{ .HostConfig.links}}
  • und viele andere

Siehe nexdrew/rekcod mehr eine vollständigere Lösung.

+0

Vielen Dank! Das war sehr hilfreich. –

Verwandte Themen