Docker:有可能从主机上获取启动Docker容器的完整命令行吗?如果是,如何进行?

brjng4g3  于 2023-04-29  发布在  Docker
关注(0)|答案(2)|浏览(166)

我不是在问这个问题:See full command of running/stopped container in Docker
我想问的是,如果有人从主机上运行一个docker容器,命令如下:

docker run --lots --of --mysterious --parameters --volumes --etc image-name

是否有其他人可以获得主机系统中用于创建容器的原始命令行的方法?
我的猜测是,不,你必须手动重建它,把所有信息从docker inspect。但我可能错了

编辑

似乎没有办法从docker本身获得这些信息,但正如下面的评论中所解释的那样,您可以始终输入history | grep "docker run"并搜索启动容器的容器。

eeq64g8w

eeq64g8w1#

标记答案。
linux history是获取你之前执行的docker命令的最好方法。

ws51t4hk

ws51t4hk2#

Bash历史经常会丢失,e。例如,在达到HISTSIZE之后或调整VM大小时。
但实际上,选项可以通过docker inspect检索。
这里有一个例子。实际bash命令:

docker run -t -i --name my-osrm-image -v "/custom/path/to/data-osrm:/data" -p 80:5000 osrm/osrm-backend osrm-routed --algorithm mld /data/europe-latest.osrm

正如你所说,docker ps --no-trunc(如果容器没有运行,还有-a)可能会有帮助,但一些信息(例如:例如,目录绑定)将丢失。
但是我们可以从

docker inspect  -f 'docker run --name {{.Name}} -v {{join .HostConfig.Binds " "}} -p {{.HostConfig.PortBindings}} {{.Config.Image}} {{join .Config.Cmd " "}}' my-osrm-image

这将输出

docker run --name /my-osrm-image -v /custom/path/to/data-osrm:/data -p map[5000/tcp:[{ 80}]] osrm/osrm-backend osrm-routed --algorithm mld /data/europe-latest.osrm

它需要对端口绑定进行一点清理,但一切都在那里,并且可以扩展到包含docker inspect JSON输出的更多选项。有关输出格式,请参见this documentation

相关问题