我有一台机器,它没有互联网连接,也没有访问任何坞库的权限(所以不可能有图像拉扯)。我想安装memcached,并且我有可用的.rpm文件。
当我想在主机上安装时,我执行命令rpm -ivh memcached-1.4.15-10.el7_3.1.x86_64.rpm。但我认为这是因为rpm包管理器是在主机操作系统上预装的。
在docker容器中,我加载.rpm文件,在dockerfile中,我包含命令RUN rpm -ivh memcached-1.4.15-10.el7_3.1.x86_64.rpm。在此之后,我将得到以下错误:
/bin/sh: 1: rpm: not found The command '/bin/sh -c rpm -ivh /home/memcached-1.4.15-10.el7_3.1.x86_64.rpm' returned a non-zero code: 127
我想这是因为在一个码头容器中,操作系统的安装是最少的。那么,如何在没有互联网连接的容器中安装rpm包管理器呢?是否有可安装的文件。
我知道这不是,而不是,使用图像的中央存储库的最佳实践。想知道在没有互联网的情况下安装是否可能?
我现在正在CentOS机器上创建容器。以下是文档文件:
FROM microsoft/dotnet:2.0-runtime
WORKDIR /home
#mempkgtest folder contains the .rpm file
COPY ${source:-mempkgtest} .
RUN rpm -ivh /home/memcached-1.4.15-10.el7_3.1.x86_64.rpm
ENTRYPOINT ["dotnet", "--info"]发布于 2018-05-30 14:02:47
Docker /dotnet构建在buildpack-deps:jessie(来自这里)之上,后者构建在这里和这里之上。
debian不使用rpm包管理器,它对包使用deb格式。/bin/sh亲切地通知您,说/bin/sh: 1: rpm: not found还没有找到rpm管理器。您可以阅读如何在debian 这里上安装rpm包。
不管怎样,你为什么不使用deb文件和dpkg包管理器呢?您可以为debian jessie 这里找到memcached pacakge。您可以在您的dockerfile中这样做:
ADD http://ftp.us.debian.org/debian/pool/main/m/memcached/memcached_1.4.21-1.1+deb8u1_amd64.deb
RUN dpkg -i memcached_1.4.21-1.1+deb8u1_amd64.deb请记住,您也需要复制依赖项。
为什么你不把你的码头图像在机器上与互联网接入,而不是导出码头图像使用docker export,然后复制和导入它在您的目的地机器?这样的方法是更简单,和apt-get将为您解决和安装所有memcached依赖项。
https://stackoverflow.com/questions/50605645
复制相似问题