docker从Path值看容器启动命令方式

 更新时间:2026年02月03日 10:52:24   作者:岳来  
Docker容器的config.v2.json文件中的Path字段指定了容器启动时要执行的主程序(可执行文件)的路径,决定了容器运行时的入口点,它通常是容器文件系统中某个可执行文件的绝对路径

在 Docker 容器的配置文件 config.v2.json 中,"Path" 字段指定了容器启动时要执行的主程序(可执行文件)的路径。

它决定了容器运行时的入口点(Entry Point),通常与 "Args" 字段配合使用,共同构成容器的启动命令。

一、Path 的常见值

“Path” 的值必须是容器文件系统中某个可执行文件的 绝对路径,常见的值包括:

示例值说明
/bin/bash启动 Bash shell(常用于交互式容器)
/bin/sh启动默认的 shell(如 Alpine 系统)
/usr/bin/python运行 Python 脚本(需在 Dockerfile 中安装 Python)
/usr/local/bin/app自定义应用程序的路径(需在容器中预装)
/entrypoint.sh自定义入口脚本(需在 Dockerfile 中赋予可执行权限)
/proc/self/exe特殊值,表示当前进程的自身(用于调试或特殊场景)

二、Path 的生成规则

2.1、Dockerfile 中的 CMD 或 ENTRYPOINT

如果 Dockerfile 中定义了 CMDENTRYPOINT,Docker 会将其解析为 "Path""Args"

示例 1(CMD):

CMD ["nginx", "-g", "daemon off;"]

对应的 config.v2.json:

"Path": "/usr/sbin/nginx",
"Args": ["-g", "daemon off;"]

示例 2(ENTRYPOINT + CMD):

ENTRYPOINT ["/bin/sh", "-c"]
CMD ["echo 'Hello Docker!'"]

对应的 config.v2.json:

"Path": "/bin/sh",
"Args": ["-c", "echo 'Hello Docker!'"]

2.2、 docker run 命令的参数

如果用户在 docker run 中显式指定命令,会覆盖 Dockerfile 中的 CMD。

示例:

docker run -it ubuntu /bin/bash

对应的 config.v2.json:

"Path": "/bin/bash",
"Args": []

2.3、 --entrypoint 参数

使用 --entrypoint 可以覆盖 Dockerfile 中的 ENTRYPOINT。

示例:

docker run --entrypoint /bin/sh nginx

对应的 config.v2.json:

"Path": "/bin/sh",
"Args": []

三、Path 的限制

  • 必须是绝对路径:Docker 不支持相对路径(如 ./bin/app),否则会尝试在 $PATH 中查找。
  • 可执行权限:目标路径必须是可执行文件,否则容器启动失败。

与 Entrypoint 的关系:

  • 如果 Dockerfile 中定义了 ENTRYPOINT,“Path” 会优先使用 ENTRYPOINT 的值。
  • 如果未定义 ENTRYPOINT,“Path” 会从 CMD 的第一个参数推导。

四、实际使用

4.1、 Nginx 容器

"Path": "/usr/sbin/nginx",
"Args": ["-g", "daemon off;"]

对应命令:nginx -g "daemon off;",用于以后台模式运行 Nginx。

4.2、 交互式 Shell

"Path": "/bin/bash",
"Args": []

对应命令:bash,进入容器的交互式终端。

4.3、 sleep

"Path": "sleep"
"Args": [10000]

对应命令:sleep 10000,容器保持运行状态10000 s

4.3、 自定义脚本

"Path": "/app/start.sh",
"Args": []

要求 /app/start.sh 是可执行脚本(需在 Dockerfile 中 RUN chmod +x /app/start.sh)。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker 容器操作退出后进入解决办法

    Docker 容器操作退出后进入解决办法

    这篇文章主要介绍了Docker 容器操作退出后进入解决办法的相关资料,需要的朋友可以参考下
    2016-10-10
  • Docker本地部署Firefox火狐浏览器并远程访问的流程

    Docker本地部署Firefox火狐浏览器并远程访问的流程

    在Docker中打开Firefox意味着我们将在一个Docker容器中运行Firefox浏览器,下面是一个简单的示例,演示如何在Docker中打开Firefox,本次实践部署环境为本地环境,感兴趣的朋友一起看看吧
    2023-11-11
  • ubuntu22通过docker安装wechat启动后无界面的问题及解决方法

    ubuntu22通过docker安装wechat启动后无界面的问题及解决方法

    这篇文章主要介绍了ubuntu22通过docker安装wechat启动后无界面的解决方法,通过微信创建脚本发现一系列问题,最终在小编的努力下顺利解决,下面把解决过程分享给大家,需要的朋友可以参考下
    2022-07-07
  • Docker下安装ElasticSearch和Kibana的示例代码

    Docker下安装ElasticSearch和Kibana的示例代码

    这篇文章主要介绍了Docker下安装ElasticSearch和Kibana的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • docker 安装nacos并配置数据库的教程详解

    docker 安装nacos并配置数据库的教程详解

    这篇文章主要介绍了docker 安装nacos并配置数据库的教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • dockerfile指令构建docker镜像的示例代码

    dockerfile指令构建docker镜像的示例代码

    本文主要介绍了dockerfile指令构建docker镜像的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Docker容器启动的全方位方法汇总

    Docker容器启动的全方位方法汇总

    这篇文章主要介绍了Docker的基本启动和运行模式,包括容器的启动、后台运行、命名、端口映射、数据持久化、环境变量配置、重启策略、交互模式等,并提供了常用容器和镜像管理命令,以及系统信息与清理命令,总结强调了必需、推荐和可选的启动选项参数
    2025-12-12
  • 通过Docker容器部署Python环境的全流程

    通过Docker容器部署Python环境的全流程

    在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容器化部署Python环境,涵盖从基础镜像构建到生产环境配置的全流程,需要的朋友可以参考下
    2025-09-09
  • Docker 中 Crontab 不执行的原因全解析与解决方案

    Docker 中 Crontab 不执行的原因全解析与解决方案

    文章总结了在Docker容器里使用crontab时遇到的问题及解决方法,常见问题包括缺少cron服务、服务未启动、容器销毁后任务丢失等,解决方法包括使用Supervisor管理cron、将任务放在宿主机的crontab、通过挂载方式加载宿主机的cron文件,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Docker网络如何配置dns

    Docker网络如何配置dns

    这篇文章主要介绍了Docker网络如何配置dns问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02

最新评论