如何在构建docker实例时安装本地rpm文件?

Sub*_*ure 14 docker dockerfile

我有以下docker文件,我想专门安装我的磁盘上可用的rpm文件,因为我正在构建docker实例.我对rpm install的调用看起来像这样.命令 RUN rpm -i chrpath-0.13-14.el7.x86_64.rpm失败.

有没有办法在本地安装rpm文件到新的Docker实例?

FROM centos:latest
    RUN yum -y install yum-utils
    RUN yum -y install python-setuptools
    RUN easy_install supervisor
    RUN mkdir -p /var/log/supervisor
    RUN yum -y install which
    RUN yum -y install git
    # Basic build dependencies.
    RUN yum -y install  autoconf build-essential unzip zip
    # Gold linker is much faster than standard linker.
    RUN yum -y install  binutils
    # Developer tools.
    RUN yum -y install bash-completion curl emacs git man-db python-dev python-pip vim tar
    RUN yum -y install gcc gcc-c++ kernel-devel make
    RUN yum -y install swig
    RUN yum -y install wget
    RUN yum -y install python-devel
    RUN yum -y install ntp
    RUN rpm -i chrpath-0.13-14.el7.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)

Vit*_*aev 24

将此行放在rpm -i命令之前:

ADD /host/abs/path/to/chrpath-0.13-14.el7.x86_64.rpm /chrpath-0.13-14.el7.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)

那你就能做到

RUN rpm -i chrpath-0.13-14.el7.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)

  • 执行此命令后,您的 Docker 映像中是否会出现无用的层?如何在安装 RPM 的一个干净层中实现相同的目标,而不留下复制的软件包本身? (4认同)
  • 嗯 对于我来说,添加失败,原因是dockerfile上下文之外的路径。它删除了开头的“ /”,并报告“没有这样的文件或目录”。参考页显示“ <src>路径必须在构建的上下文中”,原因是“由于docker构建的第一步是将上下文目录(和子目录)发送到docker守护程序。” https://docs.docker.com/engine/reference/builder/#在COPY命令上添加相同的限制 (2认同)

Kei*_*han 7

和其他人在这里写的内容的附录,而不是使用:

RUN rpm -i xyz.rpm
Run Code Online (Sandbox Code Playgroud)

您最好这样做:

RUN yum install -y xyz.rpm
Run Code Online (Sandbox Code Playgroud)

后者的优点是(a)检查签名;(b)下载任何依赖项;(c)确保YUM知道软件包。最后一点不如其他两个重要,但是仍然值得。


小智 5

假设您的 Dockerfile 可用,那么/opt/myproject/.首先您必须放入rpm其中/opt/myproject,然后添加

Add /xyz.rpm /xyz.rpm

RUN rpm -i xyz.rpm
Run Code Online (Sandbox Code Playgroud)