要获取指定Docker容器的启动参数,核心是还原docker run命令:需结合docker inspect提取HostConfig与Config字段,或使用runlike工具一键生成完整命令,包括镜像名、-p、-v、-e、--restart等选项。

直接查看容器运行时命令与参数
容器实际执行的命令和参数记录在 Args 和 Path 字段中,这是最贴近“启动行为”的原始信息:
-
docker inspect -f '{{.Path}} {{.Args}}' <容器名或ID>—— 输出类似nginx ["-g", "daemon off;"] -
docker inspect -f '{{.Config.Cmd}}' <容器名或ID>—— 查看镜像默认 CMD(可能被覆盖) -
docker inspect -f '{{.Config.Entrypoint}}' <容器名或ID>—— 查看入口点,常与 CMD 组合生效
还原完整的 docker run 命令(推荐)
仅看 Cmd/Args 不足以还原启动时的全部参数(比如 -p、-v、-e、--restart 等)。此时建议使用社区成熟工具:
-
runlike:最常用,一键生成近似原始的
docker run命令
安装:pip install runlike
使用:runlike -p <容器名>(加-p自动换行,更易读) -
rekcod:无需本地安装,纯容器方式运行
使用:docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <容器名>
检查镜像构建层中的默认配置
若容器未显式覆盖 CMD/ENTRYPOINT,其启动逻辑源自镜像。可用以下命令追溯来源:
-
docker history <镜像名或ID>—— 查看每层构建指令,重点关注含CMD或ENTRYPOINT的行 -
docker inspect <镜像名> | jq '.[0].Config.Cmd'—— 直接读取镜像默认启动命令
验证关键运行时配置
很多启动参数会体现在容器运行状态中,需单独提取:
-
端口映射:
docker inspect -f '{{.NetworkSettings.Ports}}' <容器名> -
卷挂载:
docker inspect -f '{{.Mounts}}' <容器名> -
环境变量:
docker inspect -f '{{.Config.Env}}' <容器名> -
重启策略:
docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' <容器名>
runlike 正是基于这些字段反推命令,准确率高且省时。


















