获取用于启动Docker容器的命令

z0r*_*z0r 9 docker

我有一个Docker容器正在运行,我想创建另一个类似于它的容器.如何找出用于启动容器的命令?有docker inspect,但我必须逐个查看每个配置选项.

编辑:我想获取用于启动容器的完整命令,包括环境变量,链接,卷等.例如:

docker run -d --name foo -v /bar:/bar --link baz:baz -e DEBUG=True image bash
Run Code Online (Sandbox Code Playgroud)

use*_*097 10

以下将显示环境变量,Dockerfile的ENTRYPOINT,CMDLINE,卷,卷,链接.

docker inspect -f '{{ .Config.Env}} {{ .Config.Entrypoint}} {{ .Config.Cmd}} {{ .VolumesFrom}} {{.Volumes}}  {{ .HostConfig.links}}' container_id
Run Code Online (Sandbox Code Playgroud)

  • `模板解析错误:模板::1:61:在 <.VolumesFrom> 处执行 "":地图没有键“VolumesFrom”的条目` (9认同)
  • 谢谢!在 docker 版本 19 上运行良好。此外,该命令可以根据用户的 docker 配置进行自定义。例如,如果您没有配置卷,您将收到错误 - `模板解析错误:模板::1:61:在 <.VolumesFrom> 处执行 "":映射没有键 "VolumesFrom" 的条目`。只需相应地删除那些丢失的键即可。就我而言,甚至没有配置主机链接。因此,最后在我的环境中完整的工作命令是: `docker inform '{{ .Config.Env}} {{ .Config.Entrypoint}} {{ .Config.Cmd}}' 1e8623ed76d4` (6认同)
  • 该 jq 命令缺少卷。原始回复似乎不适用于最新的 docker 18.09.0 似乎他们更改了卷的 json 位置 (3认同)
  • 像这样的`docker inspect -f'{{json .Config}}''2fd | jq'.Env'`代表Env,但是它也将是一个包含所有参数的长命令,不确定是否更方便 (2认同)
  • 这非常酷 - 当然可以更容易地找到信息。但它不是一种我可以通过复制和粘贴来生成新容器的格式。我正在考虑编写一个脚本来解析 `docker inspect` 的 JSON 输出,然后将其格式化为命令。 (2认同)
  • @ z0r 你应该使用 reckod https://github.com/nexdrew/rekcod 对 `docker run` 进行逆向工程 (2认同)