簡體   English   中英

docker build訪問主機文件夾

[英]docker build access host folder

在我的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無法訪問主機文件夾。

  1. 我搜索谷歌並發現有人說docker build支持“-v HOST_VOLUME:CONTAINER_VOLUME”,但如果我添加“-v”選項,docker build返回錯誤,“docker build”的官方指南不支持“-v”選項

  2. 我可以在我的主機文件夾上運行“python -m HttpServer”,然后我可以將baseurl = http:// HOST_IP:8000 / local_repo寫入/etc/yum.repos.d/local.yum,然后Dockerfile可以訪問此服務器並且安裝RPMs,但我不想采用這種方式,因為多用戶正在使用這個主機,如果一個人在端口8000上運行httpserver,其他人就無法再次運行。 我希望每個人都獨立運行docker build。

  3. 我也可以運行“COPY HOST_LOCAL_REPO CONTAINER_VOLUME”,然后將/etc/yum.repos.d/local.yum寫為baseurl = file:// CONTAINER_VOLUME /,然后docker build可以正確安裝RPM。 但這會使我的Docker鏡像大小過大,甚至“rm -rf”是Dockerfile末尾的容器卷。 大尺寸是不可接受的

  4. RPMs彼此依賴,即使我只是安裝1.rpm,它將是111.rpm 112.rpm 113.rpm ....,所以我不知道我真正需要什么rpms,但我肯定是所有的rpms都在本地repo文件夾中。

我的問題是:在Dockerfile中有沒有辦法使用file:// protocol運行“yum install host_repo_url”?

謝謝

看起來你可能想在某個隨機端口運行你的python HTTP服務器,並將--build-arg的端口號傳遞給docker build 選擇隨機端口可以很容易地包裝在shell腳本中。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM