我有一台机器没有互联网连接,也无法访问任何docker存储库(因此无法进行图像提取)。我想安装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
我想这是因为在docker容器中,操作系统只有最低限度的安装。那么如何在没有互联网连接的情况下在容器内安装rpm包管理器?是否有可安装的文件。
我理解不使用图像的中央存储库不是最佳做法。想知道是否可以在没有互联网的情况下安装?
我现在正在CentOS机器上创建容器。以下是dockerfile:
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"]
答案 0 :(得分:3)
Docker镜像microsoft / dotnet构建于buildpack-deps之上:jessie-scm(来自here),它构建于top debian:jessie(来自here和here) 。
debian不使用rpm包管理器,它使用deb格式的包。 / bin / sh告诉你,通过说/bin/sh: 1: rpm: not found
找不到rpm管理员。您可以阅读如何在debian here上安装rpm软件包。
无论如何,为什么不使用deb文件和dpkg包管理器?你可以找到memcached pacakge for debian jessie here。你可以在你的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
依赖项。