我正在构建的docker镜像通过pip拉出了很多python包。
RUN pip install -r lots-of-packages.txt
我的主机正在运行PyPi包镜像和缓存,以便可以快速下载这些包。
pip install
命令允许用户通过参数--index-url
指定包索引的位置:
RUN pip install --index-url http://localhost:3141/root/pypi/ -r lots-of-packages.txt
但是,在docker build
期间,主机localhost
引用了docker容器本身,而不是我为缓存提供服务的主机。
如何通过docker build
构建docker容器时访问主机上的网络资源?
docker build --add-host <host>:<ip>
似乎允许我为IP设置主机名,但是在构建期间是否有一个有效的IP来寻址主机?
答案 0 :(得分:0)
您可以通过在构建时指定网络模式来执行此操作:
docker build --network host ...
答案 1 :(得分:0)
最简单的方法是检查docker0网桥的ip(例如,使用ip a
命令)并在该网桥上使用主机ip而不是localhost。所以假设您运行Linux并且docker0 ip是172.17.0.1,您的命令将如下所示:
RUN pip install --index-url http://172.17.0.1:3141/root/pypi/ lots-of-packages.txt
如果您在Windows或Mac上运行,那么可能会涉及一些端口转发。