天天看点

docker-proxy 的原理

本篇是第七部分“网络篇”的第五篇。在这个部分,我会为你由浅入深的介绍 Docker 网络相关的内容。包括 Docker 网络基础及其实现和内部原理等。上篇,我为你介绍了 Docker 如何利用 iptables 为容器提供网络。本篇,我们深入了解下之前提到的 Docker 的一个组件 docker-proxy 的工作原理。

在之前的《Docker 核心架构及拆解(中)》我已经为你介绍过 docker-proxy 的基本应用。

这里我们稍作简单的复习:dockerd 在启动时提供了一个

--userland-proxy

的参数,用于控制是否启用 userland proxy 来处理回环(loopback)流量,并且可以通过

--userland-proxy-path

参数自定义 userland proxy 二进制文件的路径。

(MoeLove) ➜  ~ dockerd --help |grep userland-proxy
      --userland-proxy                          Use userland proxy for loopback traffic (default true)
      --userland-proxy-path string              Path to the userland proxy binary
           

默认使用的是 docker-proxy,它支持的参数如下:

(MoeLove) ➜  ~ docker-proxy -h
Usage of docker-proxy:
  -container-ip string
        container ip
  -container-port int
        container port (default -1)