【问题标题】:Override a volume when Building docker image from another docker image从另一个 docker 映像构建 docker 映像时覆盖卷
【发布时间】:2019-01-26 02:05:31
【问题描述】:

对不起,如果问题是基本的,但是否可以从另一个具有不同卷的新映像中构建 docker 映像?我的用例如下:

  1. 从图片库/odoo开始(cfr.https://hub.docker.com/_/odoo/
  2. 将文件夹上传到卷“/mnt/extra-addons”
  3. 构建一个新图像,标记它,然后将其放入我们的内部图像存储库中

我们怎样才能做到这一点?我想避免将额外的文件夹放入主机文件系统中

非常感谢

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    在 Docker 开发团队添加您正在寻找的功能之前,这种方法似乎效果最好。

    Dockerfile

    FROM percona:5.7.24 as dbdata
    MAINTAINER monkey@blackmirror.org
    FROM centos:7
    USER root
    COPY --from=dbdata / /
    

    随心所欲。这消除了 VOLUME 问题。哎呀,也许我会编写工具来自动执行此操作:)

    【讨论】:

      【解决方案2】:

      您有几个选项,而不涉及运行容器的主机操作系统

      1. 制作自己的 Dockerfile,使用 FROM 指令从 library/odoo Docker 映像继承,并将 COPY 文件放入 /mnt/extra-addons 目录。这仍然在一定程度上涉及您的主机操作系统,但可能是可以接受的,因为您不一定要在运行它的同一主机上构建 Docker 映像。

      2. 制作您自己的 Dockerfile,如 (1) 所示,但使用入口点脚本在运行时下载 /mnt/extra-addons 的内容。这会增加您的容器启动时间,因为下载需要在运行您的服务之前进行,但不需要涉及主机目录。

      如果您的构建管道支持,我个人会选择 (1)。这会将插件直接烘焙到图像中,因此图像本身将是一个完整的、随时可用的构建工件。

      【讨论】:

      • 感谢 bluescores !我会选择(1),因为我使用的是 gitlab 并且那里有一个管道 Ci。所以我只是从 odoo 图像和 COPY 文件夹开始进入路径?新图像将自动继承原始图像的所有定义(CMD..etc)?
      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2021-12-24
      • 2019-04-10
      • 2017-02-11
      相关资源
      最近更新 更多