如何在使用“docker build”时获取主机的地址?

我需要在Docker构build期间在Dockerfile中引用主机或主机networking,我该怎么做? 我想这样做,克隆一些git回购,或者scp一些文件来设置图像。

它很容易克隆一个github回购,因为docker将解决的DNS。 但是,我没有可用于正在构build的docker映像的主机networking的dns条目。

实际上,我甚至不知道主机的IP地址是什么,不用介意设置dns。

你所要做的与Dockerfile的想法背道而驰。

Dockerfile的目的是提供图像的“描述”,同时保证可重复性。 这就是为什么你在Dockerfile中没有任何特定的主机,所以它可以在任何地方build立,结果相同。

如果您需要与主机进行更密切的交互,这意味着您的结果将会对主机造成严重影响,您应该在运行时执行此操作。 查看CMDENTRYPOINT以使容器在启动时执行某些操作。

看起来很奇怪,你不会知道Docker主机。 我甚至不知道怎么可能。

只需在构build过程中传递主机信息即可。

docker run -e DOCKER_HOST=1.2.3.4 busybox env

或者,你将不得不使用某种发现系统,例如DNS,etcd,zookeeper或consul。

从docker api 1.25开始,你现在可以简单地做:

 docker build --network=host -f myDockerFile ... 

这将使您可以在构build过程中访问主机networking。