docker inspect 可查看镜像默认启动命令(cmd)和入口点(entrypoint),二者共同决定容器启动时执行的程序与参数;通过 --format 精确提取 config.entrypoint 和 config.cmd 字段,如 docker inspect --format='{{.config.entrypoint}}' image_name,并注意镜像 inspect 反映原始定义,容器 inspect 显示运行时最终配置。

使用 docker inspect 可以查看镜像的默认启动命令(Cmd)和入口点(Entrypoint),它们共同决定了容器启动时执行的程序和参数。
查看镜像的 Entrypoint 和 Cmd
运行以下命令,替换 IMAGE_NAME 为你的镜像名或 ID:
docker inspect IMAGE_NAME
输出是 JSON 格式,重点关注 Config.Entrypoint 和 Config.Cmd 字段。例如:
"Entrypoint": ["/docker-entrypoint.sh"], "Cmd": ["nginx", "-g", "daemon off;"]
这表示容器启动时实际执行的是:/docker-entrypoint.sh nginx -g "daemon off;"(Entrypoint 接收 Cmd 作为参数)。
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
只提取关键字段,更清晰
用 --format 简化输出,避免冗长 JSON:
- 只看 Entrypoint:
docker inspect --format='{{.Config.Entrypoint}}' IMAGE_NAME - 只看 Cmd:
docker inspect --format='{{.Config.Cmd}}' IMAGE_NAME - 同时看两者(一行显示):
docker inspect --format='Entrypoint: {{.Config.Entrypoint}} | Cmd: {{.Config.Cmd}}' IMAGE_NAME
理解 Entrypoint 和 Cmd 的组合逻辑
Docker 启动容器时,会把 Cmd 作为参数传给 Entrypoint。如果只有 Cmd、没有 Entrypoint,则直接执行 Cmd;如果只有 Entrypoint、没有 Cmd,则只执行 Entrypoint,不带额外参数。
常见情况举例:
-
"Entrypoint": ["sh", "-c"], "Cmd": ["echo hello"]→ 执行sh -c "echo hello" -
"Entrypoint": null, "Cmd": ["python", "app.py"]→ 直接执行python app.py -
"Entrypoint": ["/bin/bash"], "Cmd": []→ 执行/bin/bash,无参数
注意:容器 vs 镜像的 inspect 结果可能不同
对已运行/退出的容器执行 docker inspect CONTAINER_ID,看到的是该容器启动时**最终生效的配置**(可能被 docker run 的 --entrypoint 或 --cmd 覆盖)。若想确认镜像原始定义,请始终 inspect 镜像名(如 nginx:alpine),而非某个具体容器。










