国内的网络环境,懂得都懂。

Docker build的时候常常需要在镜像内使用包管理器安装一些对应的包,比如gcc/g++等等,由于独特的网络环境,不得不使用一些魔法手段。

常用的方法是通过ENV在dockerfile里直接修改HTTP_PROXY,HTTPS_PROXY,GOPROXY等变量为国内特有的地址, 但是对于想开放给世界范围使用的开源项目,镜像写死这些东西会对非CN地区用家造成一些困绕。

在不修改Dockerfile本身的情况下,可以使用build-arg在构建阶段注入环境变量,通过--network host将构建阶段的网路环境与本机打通。 这样就可以借助本地的魔法加速包管理器拉取速度了。

一个简单地例子: docker build --network host --build-arg http_proxy=http://127.0.0.1:7890 --build-arg https_proxy=http://127.0.0.1:7890 .

当打包好镜像后,也可以使用这种方法完成需要拉取外网内容初始化部分的。 docker run --network host -e http_proxy=http://127.0.0.1:7890 -e https_proxy=http://127.0.0.1:7890 ac9e557bd88d