簡體   English   中英

來自正在運行的docker /進程的docker命令

[英]docker command from the running docker / process

在我的設置中,我們使用Amazon ECS Infrastructure啟動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 inspect運行。
您必須從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更多更完整的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM