当前位置: 首页 > 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

相关文章:

  • STM32裸机开发转FreeRTOS教程
  • 1/7距离放假一周加1
  • 数据库1-4讲
  • CSS Grid 布局示例(基本布局+代码属性描述)
  • C++11——2:可变模板参数
  • 鸿蒙NEXT使用request模块实现本地文件上传
  • 【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详解