栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

多个Docker容器,相同的映像,不同的配置

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多个Docker容器,相同的映像,不同的配置

我认为查看易于理解的示例可以为您提供最好的画面。

您要做的是完全有效的,映像应该是您需要运行的任何内容,而无需进行配置。

要生成配置,您可以:


a)体积安装

使用卷并在容器启动期间挂载文件

docker run -v my.ini:/etc/mysql/my.ini percona
(与相似
docker-compose
)。请注意,您可以根据需要多次重复此操作,因此可以将多个配置装入 容器中
(因此映像的运行时版本)。您将在运行容器之前在主机上创建这些配置,并且需要将这些文件与容器一起运送,这是此方法的缺点(可移植性)

b)基于入口点的配置(生成)

大多数高级Docker映像确实提供了一个复杂的入口点,该入口点消耗了启动映像时传递的ENV变量来为您创建配置,例如https://github.com/docker-
library/percona /blob/master/5.7/docker-
entrypoint.sh

因此,当您运行此映像时,您可以执行

docker run -e MYSQL_DATAbase=myapppercona
此操作,这将启动percona并为您创建数据库percona。这一切都由

  1. 在此处添加入口点脚本https://github.com/docker-library/percona/blob/master/5.7/Dockerfile#L65
  2. 不要忘记在映像构建期间复制脚本https://github.com/docker-library/percona/blob/master/5.7/Dockerfile#L63
  3. 然后在图像启动期间,您的ENV变量将导致此事件触发:https : //github.com/docker-library/percona/blob/master/5.7/docker-entrypoint.sh#L91

当然,您可以随心所欲地做任何事情。例如,这将配置一个常规的门户图像:https : //github.com/EugenMayer/docker-rancher-extra-
catalogs/blob/master/templates/registry-slim/11/docker-
compose.yml
具有此入口点https:/ /github.com/EugenMayer/docker-image-
portus/blob/master/build/startup.sh

因此,您会看到,切入点策略非常普遍且功能强大,我想尽可能地走这条路。

c)衍生图像

也许是出于“完整性”(源自图像的策略)的考虑,因此您将基于“ myapp”的图像作为基础,并为安装X创建了新图像

from myappCOPY my.ini /etc/mysql/my.iniCOPY application.yml /var/app/config/application.yml

并将此图像称为myapp:x-显而易见的问题是,与a)相比,您最终拥有很多图像,而a)它的可移植性更高。

希望能有所帮助



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412812.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号