【发布时间】:2019-03-27 15:19:46
【问题描述】:
我需要在 Kibana 界面中进行修改,例如更改徽标等。为此,我需要在我正在使用的 docker 映像中进行修改。什么是正确的方法?如何重建这个修改后的图像?
我已尝试提取新图像并对其进行处理。但是修改并没有显示在界面上。
【问题讨论】:
我需要在 Kibana 界面中进行修改,例如更改徽标等。为此,我需要在我正在使用的 docker 映像中进行修改。什么是正确的方法?如何重建这个修改后的图像?
我已尝试提取新图像并对其进行处理。但是修改并没有显示在界面上。
【问题讨论】:
只需使用docker commit 或尝试使用 Dockerfile 构建扩展映像。
【讨论】:
docker commit 不是可重现的路径,您基本上不应该使用它。 (有一个更新的 Kibana 补丁版本;您如何在更新的基础映像之上应用完全相同的更改?)
有两种基本的好方法,具体取决于您需要进行多少自定义。
如果您只是替换配置文件并注入备用映像,则可以使用 Docker 绑定挂载来执行此操作。执行此操作的典型 Docker Compose 文件可能如下所示(我正在编一些路径):
version: '3'
services:
kibana:
image: 'kibana:6.6.2'
volumes:
- ./kibana.yml:/etc/kibana/kibana.yml
- ./kibana.png:/usr/share/kibana/assets/kibana.png
然后您可以检查此docker-compose.yml、配置文件以及您以这种方式注入源代码控制的任何其他内容。这些文件替换指定路径中图像中的相应文件。 (如果容器进程恰好写入这些文件,宿主文件也会发生变化。)
如果您需要进行一些更复杂的更改,构建自定义图像是有意义的。 (official Docker tutorial on building and running custom images 很有帮助,如果更面向应用程序。)您可以启动图像FROM 任何其他图像。与上面等效的Dockerfile 可能看起来像
FROM kibana:6.6.2
COPY kibana.yml /etc/kibana
COPY kibana.png /usr/share/kibana/assets
# Keep base image's ENTRYPOINT/CMD
而匹配的docker-compose.yml 文件可能只是
version: '3'
services:
kibana:
build: .
这两种方法都使您可以将进入图像/容器的所有内容检查到源代码控制中,并且在您的系统死机(或新同事正在尝试该项目,或 @987654329 @ 被损坏,或者 Amazon 关闭了您的 EC2 实例,或者...)您可以将工件从源代码控制中检查出来并再次运行它们。如果您需要更新版本的 Kibana,您只需更改图像标签并重新运行即可。
【讨论】: