栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为node.js应用构建docker镜像在代理后失败

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为node.js应用构建docker镜像在代理后失败

使用的方法

--build-arg
是正确的:您只想在构建Docker映像时使用代理设置,而不是将它们包含在Dockerfile中,这样它就不会绑定到特定的环境(您不需要在其上添加ENV条目)

您的问题是您试图在docker
build中用作cntlm代理

localhost
,这是无效的,因为在构建时,它将指向运行构建的docker容器,但实际上应指向在其中提供cntlm的主机的地址。码头工人网络。

为了使它起作用,您可以将cntlm配置为侦听多个接口,然后激活网关模式,以便可以从其他计算机上使用它。这样,在构建映像时,您会将请求从Docker实例发送到主机。

我的Docker桥接网络如下(我的主机以的地址获取

docker0
172.17.0.1
):

$ docker network inspect bridge... "Config": [ {     "Subnet": "172.17.0.0/16",     "Gateway": "172.17.0.1" }...

在我的

cntlm.conf

...Listen          127.0.0.1:3128Listen          172.17.0.1:3128...Gateway yesAllow127.0.0.1/32Allow172.17.0.0/16Deny 0/0...

使用此配置,cntlm将侦听localhost和docker bridge网络,仅允许来自任何docker容器的远程连接。

然后在使用npm构建映像时使用代理设置:

$ docker build --build-arg=HTTP_PROXY=http://172.17.0.1:3128 --build-arg=HTTPS_PROXY=http://172.17.0.1:3128 .

我希望能有所帮助,我知道在企业网络中实现所有这些确实是皮塔饼!

编辑2016年8月18日

我今天发现的事情是,如果您使用v2格式的docker-
compose文件,则启动compose文件将为您的容器创建一个新的网络。这意味着您需要相应地调整cntlm文件以接受来自这些新范围的连接。

举例来说,我的一个compose文件刚刚在下创建了一个网络

172.19.0.0/16
,但是我的cntlm配置只允许来自的连接
172.17.0.0/16
。如果遇到连接问题,请检查系统日志以识别问题。

https://docs.docker.com/compose/networking/



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412845.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号