在 docker 构建期间安装 CDROM 存储库

Mount-ing a CDROM repo during docker build

我正在构建一个 docker 图像,其中还包含一个小的 yum install。我目前所在的位置,防火墙和访问控制使 docker pullyum install 等速度极慢。

在我的例子中,它是使用此 official image script

的 JRE8 docker 图像

我的问题:

构建图像只需要 2 个库 (gzip + tar),它们的总和仅为 (132 kB + 865 kB)。但是 docker 构建脚本中的 yum 会首先下载超过 80 MB 的 repo 信息。虽然 80 MB 通常很小,但在这里,仅下载就花费了 1 个多小时。如果我的同事需要构建,这纯粹是在浪费生产时间,更不用说挫败感了。

我知道的解决方法:

我的赌注:

我的问题:

我无法弄清楚如何在不使用 httpd 的情况下从容器构建内部创建到 cdrom 存储库的挂载点。

简而言之linux我这样做:

mkdir /cdrom
mount /dev/cdrom /cdrom

cat > /etc/yum.repos.d/cdrom.repo <<EOF
[cdrom]
name=CDROM Repo
baseurl=file:///cdrom
enabled=1
gpgcheck=1
gpgkey=file:///cdrom/RPM-GPG-KEY-oracle
EOF

感谢任何帮助。

Docker 容器无法访问主机设备。我想你必须围绕 docker 构建命令编写一个包装脚本来执行以下操作

  1. 首先将 CD ROM 挂载到 docker 上下文中的目录(这将是您的 Docker 文件所在的子目录)。
  2. 使用此目录中的内容调用 docker 构建命令
  3. 卸载 CD ROM。

所以,

cd docker_build_dir
mkdir cdrom
mount /dev/cdrom cdrom
docker build "$@" .
umount cdrom

在 Docker 文件中,您可以简单地这样做:

RUN cd cdrom && rpm -ivh rpms_you_need