docker生成访问主机文件夹

docker生成访问主机文件夹,docker,containers,Docker,Containers,在我的centos7主机上,我编写了一个Dockerfile以在centos7:latest上构建一个映像库。 另外,在我的centos7主机上,有一个本地yumrepo文件夹,有许多RPM需要安装到docker image,总大小约为1GB 在Dockerfile中,我需要将repo url写入/etc/yum.repos.d/local.yum,如:baseurl=file://home/local_yumrepo/. 然后运行“yum-y安装1.rpm 2.rpm…” 但是dockerfi

在我的centos7主机上,我编写了一个Dockerfile以在centos7:latest上构建一个映像库。 另外,在我的centos7主机上,有一个本地yumrepo文件夹,有许多RPM需要安装到docker image,总大小约为1GB

在Dockerfile中,我需要将repo url写入/etc/yum.repos.d/local.yum,如:baseurl=file://home/local_yumrepo/. 然后运行“yum-y安装1.rpm 2.rpm…” 但是dockerfile无法访问主机文件夹

  • 我搜索谷歌发现有人说docker build support“-v HOST\u VOLUME:CONTAINER\u VOLUME”,但如果我添加“-v”选项,docker build将返回错误,而对于“docker build”,则不支持“-v”选项

  • 我可以在我的主机文件夹上运行“python-mHttpServer”,然后我可以将baseurl=写入/etc/yum.repos.d/local.yum,然后Dockerfile可以访问此服务器并安装RPM,但我不想采用这种方式,因为多用户正在使用此主机,如果一个人在端口8000上运行HttpServer,其他人将无法再次运行。我希望每个人都独立运行docker build

  • 我还可以运行“复制主机\u本地\u REPO容器\u卷”,然后将/etc/yum.repos.d/LOCAL.yum作为baseurl写入=file://CONTAINER_VOLUME/,则docker build可以正确安装RPM。但这将使我的Docker图像尺寸太大,甚至“rm-rf”容器体积在Dockerfile的末尾。尺寸太大是不能接受的

  • rpm相互依赖,即使我只是yum install 1.rpm,它也会是111.rpm 112.rpm 113.rpm….,所以我不知道我真正需要什么rpm,但我确信所有rpm都在本地repo文件夹中

  • 我的问题是:Dockerfile中是否有一种方法可以使用file://protocol运行“yum install host\u repo\u url”


    谢谢

    看起来您可能想在某个随机端口运行python HTTP服务器,并将
    --build arg
    中的端口号传递给
    docker build
    。选择随机端口可以很容易地包装在shell脚本中


    请注意,您至少需要Docker 1.9才能使用
    --build arg

    谢谢您的评论。实际上我不想使用HTTP服务器方式,谢谢您的评论。我可以获取随机端口并将端口传递给docker构建命令,但实际上我不想使用HTTP服务器方式。我更喜欢docker build可以像“docker run-v”options.PS一样访问主机文件夹,如果我将docker安装为“yum install docker”,则版本为1.10,但如果我按照官方指南执行“yum install docker engine”,版本为1.12.5版本:1.12.5 API版本:1.24 Go版本:go1.6.4 Git提交:7392c3b构建:Fri Dec 16 02:23:59 2016 OS/Arch:linux/amd64服务器:版本:1.12.5 API版本:1.24 Go版本:go1.6.4 Git提交:7392c3b构建:Fri Dec 16 02:23:59 2016 OS/Arch:linux/amd64