【问题标题】:Recreating modified Docker image重新创建修改后的 Docker 映像
【发布时间】:2019-03-27 15:19:46
【问题描述】:

我需要在 Kibana 界面中进行修改,例如更改徽标等。为此,我需要在我正在使用的 docker 映像中进行修改。什么是正确的方法?如何重建这个修改后的图像?

我已尝试提取新图像并对其进行处理。但是修改并没有显示在界面上。

【问题讨论】:

    标签: docker image.createimage


    【解决方案1】:

    只需使用docker commit 或尝试使用 Dockerfile 构建扩展映像。

    【讨论】:

    • docker commit 不是可重现的路径,您基本上不应该使用它。 (有一个更新的 Kibana 补丁版本;您如何在更新的基础映像之上应用完全相同的更改?)
    • 我是 Docker 新手,所以我尝试的简单方法是: 1. 找到存储 Kibana 映像的文件夹。 2. 进行修改。 3.这个有待确定,接下来呢?
    • @DavidMaze 你是对的。我将弥补使用 Dockerfile 扩展图像。
    【解决方案2】:

    有两种基本的好方法,具体取决于您需要进行多少自定义。

    如果您只是替换配置文件并注入备用映像,则可以使用 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,您只需更改图像标签并重新运行即可。

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多