从容器内部访问主机的api

时间:2017-06-02 08:23:23

标签: docker docker-networking

我正在尝试用docker制作一个构建环境,我想让它自动化。我已经编写了一个自定义的二进制文件来处理构建内容,并且我已经构建了一个安装了the go binarymavenjava8 sdk的图像。

二进制的步骤是:

  • 克隆git repo
  • 运行构建命令
  • 将构建工件提取到主机。 (还没有完成。)

我在运行容器时将repo url作为参数传递给二进制文件并且它确实构建了。

但问题是我需要这些工件才能运行建立的应用程序。

我知道我可以使用volumes,但我不想使用它们,因为当构建完成后,卷变为dangle并且需要删除那些dangling volumes的工作。

我以为我可以创建一个用于将文件保存到主机的api(这意味着我必须在主机内部运行该api),我的自定义转二进制文件可以将文件发送到api,api将执行保存。

但是当涉及从容器内部调用主机时,我遇到了问题。我收到connection refused to port xx错误。

有没有更好的方法,或者我应该改变我的方法?

2 个答案:

答案 0 :(得分:2)

accessing-host-machine-as-localhost-from-a-docker-container-thats-also-inside

上找到答案

使用--add-host选项运行容器就是答案。

答案 1 :(得分:0)

虽然你可以使用

docker cp CONTAINER:SRC_PATH DEST_PATH

要从容器中取出文件,我仍然相信使用卷是更好的主意。而不是使用匿名卷使用命名的卷:

docker run -v /local/host/dir:/build/output YOURIMAGE

这允许您从/ local / host / dir

中获取主机上的人工制品

https://docs.docker.com/engine/tutorials/dockervolumes/#locate-a-volume