当前位置: 首页 > article >正文

k8s之command、args 与 CMD、ENTRYPOINT的对应关系

一、介绍

Pod中command、args与Dockerfile中ENTRYPOINT、CMD的覆盖关系。

具体的是 command 命令代替 ENTRYPOINT 的命令行,args代替 CMD 的参数。但是 并不是说 他们是一个等价的覆盖关系。

二、Dockerfile

> FROM busybox:latest
> ENTRYPOINT ["printenv"]
> CMD ["HOSTNAME", "KUBERNETES_PORT"]

Dockerfile中的CMD和ENTRYPONIT同时支持Shell格式和Exec格式

Shell格式

CMD echo "hello docker" 
ENTRYPOINT echo "hello docker" 

Exec格式(不推荐)

ENTRYPOINT ["echo", "hello docker"] 
CMD ["echo", "hello docker"] 

只有shell形式才会直接获取相关环境变量,如$HOME

Exec格式需要以shell脚本的方式去执行才能获取相关环境变量

CMD ["sh", "-c", "echo hello $NAME"]

三、Pod yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo
  name: demo
  namespace: demo
spec:
  containers:
  - command:
    - echo
    args:
    - "小A"
    image: liruilong/my-busybox
    imagePullPolicy: Always
    name: demo

以Shell方式运行(注意,和;)

command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
或
args: ["/bin/sh", "-c", "while true; do echo hello; sleep 10;done"]

读取环境变量

env:
- name: MESSAGE
  value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]

四、覆盖关系

ENTRYPOINTCMDcommandargs 结果启动命令
exec-1  cmd-1ENTRYPOINT追加CMDexec-1 cmd-1
exec-1  cmd-1exec-2cmd-2command追加argsexec-2 cmd-2
exec-1  cmd-1cmd-2ENTRYPOINT追加argsexec-1 cmd-2
exec-1  cmd-1exec-2commandexec-2

五、总结

command 和 args 均没有指定,这种情况会使用 Dockerfile 的配置的 ENTRYPOINT 和 CMD。

command 和 args 都指定了,那么 Dockerfile 的配置 ENTRYPOINT 和 CMD 被忽略,执行 command 并追加上 args 参数。

command 没有指定,指定了 args,那么 Dockerfile 中配置的 ENTRYPOINT 的命令行会被执行,CMD 会被 args 中填写的参数覆盖,追加到 ENTRYPOINT 中。

command 指定,args 没有指定,那么 Dockerfile 默认的 ENTRYPOINT 配置会被忽略,执行输入的 command,同时 Dockerfile 中的 CMD 也会被忽略。


http://www.kler.cn/a/5358.html

相关文章:

  • RabbitMQ的死信队列的产生与处理
  • 将Sqlite3数据库挂在内存上处理
  • 外包干了4年,技术退步太明显了。。。。。
  • 新手自学:如何用gromacs对简单分子复合物进行伞形采样
  • 02.10 TCP之文件传输
  • 先进制造aps专题二十九 基于ai智能体的生产排程和工厂生产仿真引擎的设计
  • 【H3C】VRRP2 及Vrrp3基本原理 华为同用
  • 【目标检测】---- YOLOX 旷视2021
  • 干货 | 关于逆变器,这些小知识你都了解么?
  • 给大家讲个笑话,拿了个offer,因为体检查出脂肪肝,公司把我拒绝了!
  • 用Owncast构建直播服务器
  • vue中的数据代理、
  • 积性函数及其初级应用
  • 秒懂算法 | 基于主成分分析法、随机森林算法和SVM算法的人脸识别问题
  • [技术杂谈]小米手机如何将锁屏快捷方式放桌面
  • 《安富莱嵌入式周报》第306期:开源独轮车,Cortex-M85修订版r1发布,Terathon图形数学库,不断变革的IDE开发环境,各个厂家总动员
  • Leetcode.1024 视频拼接
  • 让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的
  • 接触过的第一台电脑-90年代的x86与如今的树莓派
  • Redis主从集群搭建
  • 【Spring6】| Bean的作用域
  • Python基于周立功盒子的二次开发的准备工作
  • 使用宝塔面板快速搭建web网站,并内网穿透实现公网远程访问
  • 从零开始,轻松理解云原生的核心概念和关键技术
  • yolov5的基本配置
  • STP详解