k8s 中传递参数给docker容器

文章目录

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

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

docker启动时传递参数

dockerfile 文件如下:

shell 复制代码
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

shell 复制代码
#!/bin/bash

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

start-dev.sh

shell 复制代码
#!/bin/bash

echo "start dev sh"

echo $@

构建镜像:

shell 复制代码
docker build -t test:v1 . -f Dockerfile

启动容器:

shell 复制代码
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

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

yaml 复制代码
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" ]
相关推荐
冷莫溪2 小时前
Kubernetes——k8s v1.24离线部署(Containerd + Calico)
云原生·容器·kubernetes
营养充电站4 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
人工智能·算法·docker·jupyter
崔亮的博客5 小时前
K8S GPU 调度——Operator 自动管理GPU
云原生·容器·kubernetes
小义_6 小时前
K8s 全网高频常用命令大全
docker·容器·kubernetes
雨辰AI11 小时前
K8s 国产数据库慢 SQL 自动监控|Prometheus+Grafana 可视化全落地
数据库·sql·安全·容器·kubernetes·grafana·prometheus
GGG76611 小时前
k8s的 Node and Cluster实战
容器·kubernetes
半支烟隐 pzishuo13 小时前
Kubernetes Gateway API 完全指南
容器·kubernetes·gateway
兵bing13 小时前
Docker Compose 配置文件归纳总结-千问
运维·docker·容器
蓝田~13 小时前
Java镜像1.2GB→200MB的瘦身之路:Docker多阶段构建+K8s Pod OOMKilled(137)排查,后端部署避坑指南
java·docker·kubernetes
TechWJ14 小时前
Excel报表越做越乱?用Metabase搭建可更新的数据仪表盘
docker·数据分析·excel·metabase·报表工具