在我的centos7主机上,我编写了一个Dockerfile来构建基于centos7:latest的图像库。 同样在我的centos7主机上,有一个本地的yumrepo文件夹,我需要安装很多RPM到docker镜像,总大小约为1GB。
在我的Dockerfile中,我需要将repo url写入/etc/yum.repos.d/local.yum,例如:baseurl = file:// home / local_yumrepo /。 然后运行" yum -y install 1.rpm 2.rpm ..." 但是dockerfile无法访问主机文件夹。
我搜索谷歌并发现有人说码头构建支持" -v HOST_VOLUME:CONTAINER_VOLUME",但如果我添加" -v"选项,docker构建返回错误,以及{#3}} for#34; docker build"不支持" -v"选项
我可以运行" python -m HttpServer"在我的主机文件夹上,然后我可以将baseurl = official guide写入/etc/yum.repos.d/local.yum,然后Dockerfile可以访问此服务器并安装RPM,但我不想接受这个方式,因为多用户正在使用这个主机,如果一个人在端口8000上运行httpserver,其他人就无法再次运行。我希望每个人都独立运行docker build。
我也可以运行" COPY HOST_LOCAL_REPO CONTAINER_VOLUME",然后将/etc/yum.repos.d/local.yum写为baseurl = file:// CONTAINER_VOLUME /,然后docker build can正确安装RPM。但这会使我的Docker图像尺寸太大甚至" rm -rf" Dockerfile末尾的容器卷。对于大尺寸
RPMs彼此依赖,即使我只是安装1.rpm,它将是111.rpm 112.rpm 113.rpm ....所以我不知道rpms我确实需要,但我确信所有的rpms都在本地repo文件夹中。
我的问题是:Dockerfile中是否有一种方法可以运行" yum install host_repo_url"使用file:// protocol?
感谢
答案 0 :(得分:0)
您可能希望在某个随机端口上运行python HTTP服务器,并将docker build
中的端口号传递给--build-arg
。选择随机端口可以很容易地包装在shell脚本中。
请注意,至少需要Docker 1.9才能使用border-right
。