任何方式来检索最初用来创build一个Docker容器的命令?

这个问题似乎经常被问到,但我找不到任何正确,清楚地指出如何完成这个问题的答案。

我经常创buildtestingdocker容器,我运行了一段时间。 最终我停止容器,并使用docker start <name>重新启动它。 但是,有时我正在寻找升级到更新的图像,这意味着删除现有的容器,并从更新的图像中创build一个新的。

我一直在寻找一种可靠的方法来检索原来用于创build容器的“docker run”命令。 大多数响应表明只需使用Config.Cmd docker inspect并查看Config.Cmd元素,但这是不正确的。

例如,创build一个容器为:

 docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Qwerty123<(*' -e TZ=America/Toronto -p 1433:1433 -vc:/dev/docker/mssql:/var/opt/mssql --name mssql -d microsoft/mssql-server-linux 

使用docker检查将显示:

 $ docker inspect mssql | jq -r '.[0]["Config"]["Cmd"]' [ "/bin/sh", "-c", "/opt/mssql/bin/sqlservr" ] 

在github上为这个相同的请求创build了很多问题 ,但是由于info已经在inspect输出中,所有的问题都被closures了 – 只需要知道如何读取它。

有没有人创build一个实用工具,轻松地从inspect命令的输出重build命令? 我所见过的所有回应都引用了错误信息,特别是检查Config.Cmd元素,但忽略了MountsConfig.EnvConfig.ExposedPortsConfig.Volumes等元素。

有几个公用事业可以帮助你。

试一试

https://github.com/bcicen/docker-replay

https://github.com/lavie/runlike

如果你想知道更多这样的docker工具很酷的工具检查这个https://github.com/veggiemonk/awesome-docker

当然,docker检查是要走的路,但如果你只是想“重build”docker运行命令,你有

https://github.com/nexdrew/rekcod

它说

从现有容器反向devise泊坞窗运行命令(通过docker检查)。

另一种方法是Christian G答案

如何显示Docker容器的运行命令

使用bash-preexec