正在运行的docker /进程的docker命令
问题描述:
在我的设置中,我们使用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>
答
如this discussion提到:
你不会得到确切完整的命令包括卷,端口映射,并通过其他选项码头工人从码头工人运行检查的单线。
您将必须从docker inspect返回的json中提取此信息,并构造完整的docker run命令。
# 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
谢谢!这非常有帮助。 –
您可以运行'sudo docker inspect'查看详细信息。 –