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

How to install a local rpm file when building docker instance?

我有以下 docker 文件,我想专门安装一个在我构建 docker 实例时磁盘上可用的 rpm 文件。我对 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

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

ADD /host/abs/path/to/chrpath-0.13-14.el7.x86_64.rpm /chrpath-0.13-14.el7.x86_64.rpm

那你就可以

RUN rpm -i chrpath-0.13-14.el7.x86_64.rpm

假设您的 Dockerfile 位于 /opt/myproject/.,那么首先您必须将 rpm 放入 /opt/myproject,然后添加

Add /xyz.rpm /xyz.rpm

RUN rpm -i xyz.rpm

我的 Dockerfile 包含这两行:

[...]
ADD SRC/kernel-3.10.0-327.13.1.el7.x86_64.rpm  /tmp/kernel-3.10.0-327.13.1.el7.x86_64.rpm
ADD SRC/kernel-devel-3.10.0-327.13.1.el7.x86_64.rpm /tmp/kernel-devel-3.10.0-327.13.1.el7.x86_64.rpm
[...]

构建映像过程失败并出现错误 "lstat SRC/kernel-3.10.0-327.13.1.el7.x86_64.rpm: no such file or directory"

两个 RPM 文件都在 "SRC" 文件夹中,我 运行 "docker build".

有什么问题??

谢谢。

作为其他人在这里所写内容的补充,而不是使用:

RUN rpm -i xyz.rpm

你最好这样做:

RUN yum install -y xyz.rpm

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