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" ]
相关推荐
Code知行合壹30 分钟前
Kubernetes微服务DevOps
微服务·kubernetes·devops
程序员老赵1 小时前
ComfyUI Docker 镜像部署指南
人工智能·docker·aigc
会飞的土拨鼠呀1 小时前
Docker 部署开源蜜罐Cowrie
docker·容器·开源
怪我冷i2 小时前
win11使用minikube搭建K8S集群基于podman desktop( Fedora Linux 43)
linux·kubernetes·ai编程·ai写作·podman
我是谁??2 小时前
Rocky9.2离线安装docker和NVIDIA Container Toolkit训练环境搭建
运维·docker·容器
oMcLin2 小时前
如何在 Linux 上的 aaPanel 中使用 Docker 部署 WordPress 博客:从配置到上线一站式教程
linux·运维·docker
无心水3 小时前
【神经风格迁移:工程化】27、神经风格迁移全栈进阶实战:Docker容器化与K8s部署,从单机到云原生
docker·云原生·架构·神经风格迁移·docker容器化·ai部署·vgg算法
victory04313 小时前
K8S 从Harbor当中拉取镜像 连接方法
云原生·容器·kubernetes
陈陈CHENCHEN3 小时前
【Kubernetes】K8s 1.35 配置 Docker 作为容器运行时
docker·kubernetes
梁萌3 小时前
Jenkins自动化部署(docker)
docker·自动化·jenkins·流水线·cicd·smartadmin