2016-05-13 107 views
2

在我的設置中,我們使用Amazon ECS基礎架構啓動Docker容器。我知道Docker正在運行的EC2 Machine(主機),並且可以看到容器ID。正在運行的docker /進程的docker命令

有了這些信息,無論如何我可以計算出用於運行容器的docker命令嗎?

例如,

$ 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 

我有這個。我想知道,究竟是什麼

sudo docker run <various configuration parameters> 
+1

您可以運行'sudo docker inspect '查看詳細信息。 –

回答

3

this discussion提到:

你不會得到確切完整的命令包括卷,端口映射,並通過其他選項碼頭工人從碼頭工人運行檢查的單線。
您將必須從docker inspect返回的json中提取此信息,並構造完整的docker run命令。

例如,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" 
} 

這仍然是不完整:你需要,以及:

  • {{.VolumesFrom}}
  • {{.Volumes}}
  • {{ .HostConfig.links}}
  • 和許多其他

請參閱nexdrew/rekcod更完整的解決方案。

+0

謝謝!這非常有幫助。 –