在docker构建期间装载CD-ROM回购

在docker构建期间装载CD-ROM回购,docker,mount,Docker,Mount,我正在构建一个docker映像,它还涉及一个小的yum安装。我目前所处的位置,防火墙和访问控制使得docker pull,yum install等速度非常慢 在我的例子中,它是一个JRE8 docker映像 我的问题: 构建映像只需要2个库(gzip+tar),组合起来只有(132kb+865kb)。但百胜内部docker构建脚本将首先下载超过80MB的回购信息。虽然80MB通常很小,但在这里,仅仅下载就花了1个多小时。如果我的同事需要建设,这将纯粹是浪费生产时间,更不用说挫折了 我知道的变通方

我正在构建一个docker映像,它还涉及一个小的
yum安装
。我目前所处的位置,防火墙和访问控制使得
docker pull
yum install
等速度非常慢

在我的例子中,它是一个JRE8 docker映像

我的问题:

构建映像只需要2个库(gzip+tar),组合起来只有(132kb+865kb)。但百胜内部docker构建脚本将首先下载超过80MB的回购信息。虽然80MB通常很小,但在这里,仅仅下载就花了1个多小时。如果我的同事需要建设,这将纯粹是浪费生产时间,更不用说挫折了

我知道的变通方法:

  • 由于此图像可能不需要完全的yum功能,我只需抓取*.rpm文件,在容器脚本中复制
,然后使用
rpm-I
而不是
yum
  • 我可以保存构建的图像并在本地分发
  • 我还可以为docker hub找到最近的镜像,但不能找到
  • 我的赌注:

    • 我有一份linux CD,版本大致相同
    • 我可以在dockerfile中添加命令,将*.repo重命名为*.repo.old
    • 在容器内的/etc/yum.repos.d/中添加一个cdrom.repo
    • 使用yum从CDROM而不是internet加载最常用的库
    我的问题:

    我无法理解如何在不使用httpd的情况下从容器构建内部创建cdrom repo的装载点

    在纯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
    
    mkdir/cdrom
    mount/dev/cdrom/cdrom
    
    cat>/etc/yum.repos.d/cdrom.repoDocker容器无法访问主机设备。我认为您必须围绕docker build命令编写一个包装器脚本来执行以下操作

  • 首先将CD-ROM装载到docker上下文中的一个目录(DockerFile所在的子目录)
  • 使用此目录中的内容调用docker build命令
  • 卸载CD-ROM
  • 所以

    在DockerFile中,您可以简单地执行以下操作:

    RUN cd cdrom && rpm -ivh rpms_you_need
    

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

  • 首先将CD-ROM装载到docker上下文中的一个目录(DockerFile所在的子目录)
  • 使用此目录中的内容调用docker build命令
  • 卸载CD-ROM
  • 所以

    在DockerFile中,您可以简单地执行以下操作:

    RUN cd cdrom && rpm -ivh rpms_you_need
    

    你有内部docker注册表吗?@YuriG。没有内部docker注册表,使用附近的docker镜像进行大量工作,尽管速度很慢。但此问题与附近没有镜像的yum存储库有关。是否尝试在主机上装载cdrom并从装载的文件夹复制文件?@YuriG。我可以这样做,但如果存在包依赖关系(尽管在这种特定情况下没有),rpm执行将失败。是否有内部docker注册表?@YuriG。没有内部docker注册表,使用附近的docker镜像进行大量工作,尽管速度很慢。但此问题与附近没有镜像的yum存储库有关。是否尝试在主机上装载cdrom并从装载的文件夹复制文件?@YuriG。我可以这样做,但是如果存在包依赖项(尽管在这个特定情况下没有),rpm执行将失败。我要注意的唯一问题是,如果包具有依赖项,rpm执行将失败。无论如何,我现在可以找到依赖项,接受你的回答。我要注意的唯一问题是,如果包有依赖项,rpm执行将失败。无论如何,我现在可以找到依赖,接受你的答案。