在使用Docker时,我注意到几乎所有地方的“RUN”命令都是以apt-get升级&& apt-get安装等开头的。

如果您没有Internet访问权限,而只是想执行“dpkg -i ./deb-directory/*.deb”,该怎么办?

好吧,我尝试过,但我一直失败。任何意见,将不胜感激:

  dpkg: error processing archive ./deb-directory/*.deb (--install):
  cannot access archive: No such file or directory
 Errors were encountered while processing: ./deb-directory/*.deb
 INFO[0002] The command [/bin/sh -c dpkg -i ./deb-directory/*.deb] returned a non-zero code: 1`

为了澄清,是的,目录“deb-directory”确实存在。实际上,它与我构建的Dockerfile位于同一目录中。

最佳答案

这可能是一个错误,我将在他们的github上打开一张票以了解。
编辑:我做到了here

编辑2:
有人在github问题上回答了一种更好的方法。



!!!忘记以下内容,但我将其留在此处以跟踪我的反射步骤!!!

问题来自*语句,该语句似乎不适用于docker run dpkg命令。我在一个容器(使用交互式 shell )中尝试了您的命令,并且效果很好。好像dpkg尝试安装不存在的所谓./deb-directory/*.deb文件,而不是安装其中包含的所有.deb文件。

我刚刚实现了一种解决方法。在容器中复制.sh脚本,对其进行chmod +x,然后将其用作命令。
(仅供引用,当文件不是远程复制时,更喜欢使用COPY而不是ADD。有关更多信息,请检查the best practices for writing Dockerfiles。)

这是我的Dockerfile,例如:

FROM debian:latest
MAINTAINER Vrakfall <[email protected]>

COPY install.sh /
#debdir is a directory
COPY debdir /debdir
RUN chmod +x /install.sh

CMD ["/install.sh"]
install.sh(复制在根目录中)仅包含:
#!/bin/bash
dpkg -i /debdir/*.deb

而以下
docker build -t debiantest .
docker run debiantest

效果很好,并安装/debdir目录中包含的所有软件包。

关于docker - Dockerfile手动安装多个deb文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28456836/

10-12 23:00