关于docker:docker中的网络二

5次阅读

共计 1110 个字符,预计需要花费 3 分钟才能阅读完成。

docker 中网络实现原理

当 Docker 启动时,会主动在主机上创立一个 docker0 虚构网桥,实际上是 Linux 的一个 bridge,能够了解为一个软件交换机。它会在挂载到它的网口之间进行转发。

同时,Docker 随机调配一个本地未占用的公有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比方典型的 172.17.42.1,掩码为 255.255.0.0。尔后启动的容器内的网口也会主动调配一个同一网段(172.17.0.0/16)的地址。
创立一个 Docker 容器的时候,同时会创立了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也能够收到雷同的数据包)。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 结尾(例如 vethAQI2QT)。通过这种形式,主机能够跟容器通信,容器之间也能够互相通信。Docker 就创立了在主机和所有容器之间一个虚构共享网络。

docker 网络配置参数

  • -b BRIDGE--bridge=BRIDGE 指定容器挂载的网桥
  • --bip=CIDR 定制 docker0 的掩码
  • -H SOCKET...--host=SOCKET... Docker 服务端接管命令的通道
  • --icc=true|false 是否反对容器之间进行通信
  • --ip-forward=true|false 请看下文容器之间的通信
  • --iptables=true|false 是否容许 Docker 增加 iptables 规定
  • --mtu=BYTES 容器网络中的 MTU

上面 2 个命令选项既能够在启动服务时指定,也能够在启动容器时指定。在 Docker 服务启动的时候指定则会成为默认值,前面执行 docker run 时能够笼罩设置的默认值。

  • --dns=IP_ADDRESS... 应用指定的 DNS 服务器
  • --dns-search=DOMAIN... 指定 DNS 搜寻域

这些选项只有在 docker run 执行时应用,因为它是针对容器的个性内容。

  • -h HOSTNAME--hostname=HOSTNAME 配置容器主机名
  • --link=CONTAINER_NAME:ALIAS 增加到另一个容器的连贯
  • --net=bridge|none|container:NAME_or_ID|host 配置容器的桥接模式
  • -p SPEC--publish=SPEC 映射容器端口到宿主主机
  • -P or --publish-all=true|false 映射容器所有端口到宿主主机

容器拜访内部网络

容器要想拜访内部网络,须要本地零碎的转发反对。在 Linux 零碎中,查看转发是否关上

如果为 0 需关上sysctl -w net.ipv4.ip_forward=1

正文完
 0