ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kubernetes——容器应用配置的配置方式

2022-06-25 16:06:04  阅读:178  来源: 互联网

标签:容器 Kubernetes 配置文件 配置 镜像文件 指令 ENTRYPOINT


容器应用配置的配置方式

  如何为容器中的应用提供配置信息呢?传统时间中,通常有这么几种途径:启动容器时直接向命令传递参数、将定义好的配置文件编码于(嵌入)镜像文件中、通过环境变量(Environment Variables)传递配置数据,以及基于 Docker 卷传送配置文件等。

一、通过命令行参数进行配置

  在制作 Docker 镜像时,Dockerfile 中的 ENTRYPOINT 和 CMD 指令可用于指定容器启动时要运行的程序及相关的参数。

  CMD 指令以列表形式指定要运行的程序及相关的参数,但若同时存在 ENTRYPOINT 指令,则 CMD 指令中列表的所有元素均将被视作是 ENTRYPOINT 指定的程序的命令行参数。

  还可以通过在基于某镜像使用 Docker 命令创建容器时,在命令行向 ENTRYPOINT 中的程序传递额外的自定义参数,甚至还可以修改要运行的应用程序本身。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  其中的 [COMMAND] 即为自定义运行的程序,[ARG...] 则是传递给程序的参数。

  若定义相关的镜像文件时使用了 ENTRYPOINT 指令,则 [COMMAND] 和 [ARG...] 都会被当做命令行参数传递给 ENTRYPOINT 指令中指定的程序,除非为 docker run 命令额外使用 --entrypoint 选项覆盖了 ENTRYPOINT 而指定运行其他程序,如下:

      --entrypoint string              Overwrite the default ENTRYPOINT of the image

二、将配置文件嵌入镜像文件

  所谓的将配置文件嵌入镜像文件,是指用户在 Dockerfile 中使用 COPY 指令把定义好的配置文件复制到镜像文件系统上的目标位置,或者使用 RUN 指令调用 sed 或 echo 一类的命令修改配置文件从而达到为容器化应用提供自定义配置文件值目的。

三、通过环境变量向容器注入配置信息

  通过环境变量为镜像提供配置信息是 Dcoker Hub 上最常见的使用方式。

docker run -e user=root -e password=xxx

help:
  -e, --env list                       Set environment variables
      --env-file list                  Read in a file of environment variables

  例如:使用 MySQL 官方提供的镜像文件启动 MySQL 容器视使用的 MYSQL_ROOT_PASSWORD 环境变量,它用于为 MySQL 服务器的 root 用户设置登录密码。

  Kubernetes 系统支持在为 Pod 资源配置容器时使用 spec.containers.env 为容器的环境变量传值从而完成应用的配置。

四、通过存储卷向容器注入配置信息 

  Docker 存储卷(volumes)能够将宿主机上的任何文件或目录映射到容器文件系统上,因此,可以事先将配置文件放置于宿主机上的某特定路径中,而后在启动容器时进行加载。

五、借助 Dcoker config 进行容器配置

  Docker swarm service 自 1.13版本起支持使用 secret 于容器之外保存二进制数据,包括口令、SSH证书以及其他不建议通过网络传输或不应该在 Dockerfile及程序源码中非加密保护的机密数据。

  Kubernetes 系统也有类似的组件,它们被称为 Secret 和 ConfigMap,而且是 Kubernetes 系统上一等类别的资源对象,它们要么被 Pod 资源以存储卷的形式加载,要么由容器通过 envFrom 字段以变量的形式加载。

 

标签:容器,Kubernetes,配置文件,配置,镜像文件,指令,ENTRYPOINT
来源: https://www.cnblogs.com/zuoyang/p/16411645.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有