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

k8s 中传递参数给docker容器

文章目录

  • docker启动时传递参数
  • 使用k8s env传递
  • 完全覆盖 ENTRYPOINT 和 CMD

在 Kubernetes 中,可以通过多种方式将参数传递给 Dockerfile 或其运行的容器,常见的方式包括使用环境变量、命令行参数、配置文件等。以下是一些常用的方法:

docker启动时传递参数

dockerfile 文件如下:

FROM ubuntu:22.04

# 设置工作目录
ENV WORKDIR_PATH=/home/test

# 设置时区
ENV TZ Asia/Shanghai

# 防止交互式提示
ENV DEBIAN_FRONTEND=noninteractive

# 默认选择开发环境的启动脚本
ENV ENTRYPOINT_PATH=$WORKDIR_PATH/start-dev.sh

WORKDIR $WORKDIR_PATH

# 复制启动脚本
COPY ./app/start-prod.sh $WORKDIR_PATH/start-prod.sh
COPY ./app/start-dev.sh $WORKDIR_PATH/start-dev.sh

# 给脚本赋予可执行权限
RUN chmod +x $WORKDIR_PATH/start-prod.sh $WORKDIR_PATH/start-dev.sh

# 确保 $ENTRYPOINT_PATH 解析是通过 shell 启动
ENTRYPOINT ["/bin/sh", "-c", "exec $ENTRYPOINT_PATH $@"]

CMD ["--help"]

start-prod.sh

#!/bin/bash

echo "start prd sh"
echo $@
echo $1
echo $2
echo $MESSAGE

start-dev.sh

#!/bin/bash

echo "start dev sh"

echo $@

构建镜像:

docker build -t test:v1 . -f Dockerfile

启动容器:


docker run -it --rm  test:v1 /bin/bash

在这里插入图片描述

指定prd脚本执行,启动容器

docker run -it --rm  -e ENTRYPOINT_PATH="/home/test/start-prod.sh" test:v1 /bin/bash

在这里插入图片描述

使用k8s env传递

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: test:v1
      env:
        - name: ENTRYPOINT_PATH
          value: "/home/test/start-prod.sh"
        - name: MESSAGE
          value: "hello world!"

运行pod:

kubectl apply -f pod.yaml

在这里插入图片描述

完全覆盖 ENTRYPOINT 和 CMD

apiVersion: v1
kind: Pod
metadata:
  name: my-pod2
spec:
  containers:
    - name: my-container
      image: test:v1
      command: [ "/bin/sh" ]
      args: [ "/home/test/start-prod.sh", "--param", "some_value" ]

在这里插入图片描述


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

相关文章:

  • 如何基于Netty手写简单的Tomcat?
  • React合成事件及其核心思想详解
  • 强化学习数学原理学习(四)
  • Ubuntu安装配置MySQL(远程登录)
  • 网络基础(4)IP协议
  • tdengine学习笔记实战-jdbc连接tdengine数据库
  • SHELL(5)字符串运算符和逻辑运算符
  • QT与嵌入式——获取网络实时时间
  • 一个交替优化问题的求解(续)
  • GNN初探
  • 2.tree of thought (使用LangChain解决N皇后问题)
  • 机器学习笔记 // 创建并训练DNN来拟合和预测序列数据
  • 运维面试题.云计算面试题之四.K8S
  • MFC线程-AfxBeginThread使用方法
  • SpringBoot常用的注解
  • 源码分析Spring Boot (v3.3.0)
  • Linux离线安装python相关包
  • driver.js实现页面操作指引
  • Linux-Samba
  • Axios交互