ConfigMap 和 Secret 是 Kubernetes 系统上两种特殊类型的存储卷,前者用于为容器中的应用提供配置数据以定制程序的行为,而敏感的配置信息,例如密钥、证书等则通常由后者来配置。ConfigMap 和 Secret 将相应的配置信息保存于资源对象中,而后在 Pod 对象上以存储卷的形式将其挂载并加载相关的配置,降低了配置与镜像文件的耦合关系。
Dockerfile 中的 ENTRYPOINT 和 CMD 指令用于指定容器启动时要运行的程序及其相关的参数。其中,CMD 指令以列表形式指定要运行的程序及其相关的参数,若同时存在 ENTRYPOINT 指令,则 CMD 指令中的列表所有元素均被视作由 ENTRYPOINT 指定程序的命令行参数。另外,在基于某镜像创建容器时,可以通过向 ENTRYPOINT 中的程序传递额外的自定义参数,甚至还可以修改要运行的应用程序本向。
配置文件嵌入镜像文件,是指用户在 Dockerfile 中使用 COPY 指令把定义好的配置文件复制到镜像文件系统上的目标位置,或者使用 RUN 指令调用 sed 或 echo 一类的命令修改配置文件,从而达到为容器化应用提供自定义配置文件之目的。
Docker 存储卷能够将宿主机之上的任何文件或目录映射进容器文件系统上,因此,可以事先将配置文件放置于宿主机之上的某特定路径中,而后在启动容器时进行加载。这种方式灵活易用,但也依赖于用户事先将配置数据提供在宿主机上的特定路径。
通过环境变量配置容器化应用时,需要在容器配置段中嵌套使用 env 字段,它的值是一个由环境变量构建的列表。每个环境变量通常由 name 和 value(或 valueFrom)字段构成。
name
value