最近搞envoy代理,拉了envoyproxy/envoy:latest的镜像,本地进行了一次测试,但是碰到了代理失败的情况,记录一下整个过程。
以上配置内容的含义是,在9901端口上监听work参数{#work参数常见可选值有none、host、bridgenone:顾名思义,禁用容器网络,这个时候容器无法访问外部网络,外部也无法访问容器,你的-p参数也会被忽略bridge:桥接,也是默认模式,容器会与宿主进行桥接,通过一个桥接的docker0网卡进行通信host:即撤销网络隔离,这个模式下,你不需要要指定-p参数,容器内监听什么端口,就直接会绑定到宿主的同一端口上,这时容器和宿主是没有隔离的
在综合考虑之后,host模式虽然可以解决问题,但不是我想要的,必要的隔离还是需要的,所以优选bridge模式。对于bridge模式,在linux环境下,dockerdeamon会创建一个docker0的网卡,用作网桥,实现容器和宿主的通信,但mac系统下隔离技术与linux不同,所以并不会创建这个网卡。
因为bridge是默认的网络选项,我们不需要修改docker启动命令。那么mac上如何从容器内访问宿主的服务呢?
我本机安装了formac,自带dockerdeamon。版本是3.6.0,内置dockerengine是20.10.8。在17.12版本之前,可以通过host名docker.for.mac.localhost来访问宿主,17.12版本及以后,可以通过docker.for.mac.host.internal来访问宿主。登录到容器内通过ping进行验证如下:
根据以上分析,调整envoy配置中clusters下的上游主机地址,将127.0.0.1替换为docker.for.mac.localhost或docker.for.mac.host.internal,即可实现代理对宿主机的访问。
zohar163:makecontainer-serve在dockerfile里面下载hugo这里报错,有梯子也是,能分享个镜像么?
Star_gazerrrr:讲的很清楚!自学看到反向弧不是很理解,现在看就是抵消作用。但是用悔棋的描述更好!非常感谢!
BBBB20:大佬您好,这个mutex的extend方法有什么用吗?,java中的redission有个watchdog机制,是在后台每三分之一的时间段检测该业务是否还持有锁,会将锁续期,可是redsync这个包提供extend方法,我还要单独起一个协程去定时的去extend锁的过期时间吗?
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。