【问题标题】:Add a new entrypoint to a docker image向 docker 映像添加新入口点
【发布时间】:2017-05-25 17:47:49
【问题描述】:

最近,我们决定将我们的一项服务移至 docker 容器。该服务是另一家公司的产品,他们为我们提供了 docker 镜像。但是,我们需要在容器入口点做一些额外的配置步骤。

我尝试的第一件事是从基础镜像创建一个 DockerFile,然后添加命令来执行额外的步骤,如下所示:

From baseimage:tag 
RUN chmod a+w /path/to/entrypoint_creates_this_file

但是,它失败了,因为这些额外的步骤必须在运行基本容器入口点之后运行。

有没有办法扩展基础图像的入口点?如果不是,那么正确的方法是什么?

谢谢

【问题讨论】:

  • 原始入口点是定义为单个命令还是shell脚本?如果命令:创建一个入口点脚本文件(或命令),其中包含原始命令 + 您的配置命令,并更改 Dockerfile 中的 ENTRYPOINT 列表以使用它。如果脚本:创建一个新脚本,它执行原始入口点脚本,然后执行您自己的配置命令。然后将 ENTRYPOINT 列表更改为指向您的新脚本。
  • 谢谢 Snorre,是的,这是正确的解决方案。原始入口点是一个 shell 脚本,正如你所说,我需要在我的自定义入口点执行它,然后再执行其他步骤。
  • 很高兴听到问题已解决。

标签: docker dockerfile


【解决方案1】:

我终于在我的新入口点 bash 脚本中调用了原始入口点 bash 脚本,然后再执行其他额外的配置步骤。

【讨论】:

    【解决方案2】:

    您甚至不需要创建新的 Dockerfile。要修改entrypoint,您可以使用以下命令运行映像:

    docker run --entrypoint new-entry-point-cmd baseimage:tag <optional-args-to-entrypoint>

    【讨论】:

    • 这样的话基础镜像入口点会过度疲劳,而我需要先运行它,然后再运行我的自定义入口点。
    【解决方案3】:

    创建您的自定义入口点文件

    -> 将其添加到图像

    -> 将此指定为您的入口点文件

    FROM image:base
    
    COPY /path/to/my-entry-point.sh /my-entry-point.sh
    // do sth here
    
    ENTRYPOINT ["/my-entry-point.sh"]
    

    【讨论】:

    • 这样,基础镜像入口点会过度疲劳,而我需要先运行它,然后再运行我的自定义入口点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2020-01-21
    • 2018-09-28
    • 2019-11-08
    相关资源
    最近更新 更多