构建docker容器时将流量路由到主机

时间:2017-09-12 18:18:17

标签: python docker pip

我正在构建的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来寻址主机?

2 个答案:

答案 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上运行,那么可能会涉及一些端口转发。