docker命令从运行的docker /进程

在我的设置中,我们使用Amazon ECS基础架构启动Docker容器。 我知道docker正在运行的EC2机器(主机),可以看到容器ID。

有了这些信息,无论如何,我可以计算出用来运行容器的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> 

正如在这个讨论中提到的:

你不会得到完整的命令,包括卷,端口映射和其他选项传递给docker运行从docker检查一行。
您将不得不从docker检查返回的json中提取这些信息,并将使用的完整docker run命令设置为frame。

例如, 这个要点表明 :

 # 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更完整的解决scheme。