从容器的角度了解网络

容器使用的网络类型,无论是bridgeoverlaymacvlan网络还是自定义网络插件,在容器内部都是透明的。 从容器的角度来看,它具有一个网络接口,包含IP地址,网关,路由表,DNS服务和其他网络详细信息(假定容器未使用none网络驱动程序)。 从容器的角度来看,本主题与网络相关。

发布端口

默认情况下,创建容器时,它不会将其任何端口发布到外界。 要使端口可用于Docker外部的服务,或未连接到容器网络的Docker容器,请使用--publish-p标记。 这将创建一个防火墙规则,该规则将容器端口映射到Docker主机上的端口。 这里有些例子。

标记值 说明
-p 8080:80 将容器中的TCP端口80映射到Docker主机上的端口8080。
-p 192.168.1.100:8080:80 将容器中的TCP端口80映射到Docker主机上的端口8080,以连接到主机IP 192.168.1.100。
-p 8080:80/udp 将容器中的UDP端口80映射到Docker主机上的端口8080。
-p 8080:80/tcp -p 8080:80/udp 将容器上的TCP端口80映射到Docker主机上的TCP端口8080,并将容器中的UDP端口80映射到Docker主机上的UDP端口8080。

IP地址和主机名

默认情况下,每个接到一个Docker网络,都会为容器分配一个IP地址。 IP地址是从分配给网络的IP池中分配的,因此Docker后台程序实际上充当了每个容器的DHCP服务器。每个网络还具有默认的子网掩码和网关。

容器启动时,只能使用--network将其连接到单个网络。但是,您可以使用docker network connect将正在运行的容器连接到多个网络。使用--network标记启动容器时,可以使用--ip--ip6标记指定分配给该网络上的容器的IP地址。

使用docker network connect将现有容器连接到其他网络时,可以在该命令上使用--ip--ip6标记来指定在其他网络上容器的IP地址。

同样,容器的主机名默认为Docker中容器的ID。您可以使用--hostname覆盖主机名。使用docker network connect连接到现有网络时,可以使用--alias标记为该网络上的容器指定其他网络别名。

DNS服务

默认情况下,容器会继承Docker后台程序的DNS设置,包括/etc/hosts/etc/resolv.conf。您可以为每个容器覆盖这些设置。 | 标记 | 说明 | | :---- | :---- | | --dns | DNS服务器的IP地址。 要指定多个DNS服务器,请使用多个--dns标记。 如果容器无法访问您指定的任何IP地址,则会添加Google的公共DNS服务器8.8.8.8,以便您的容器可以解析Internet域。 | | --dns-search | 一个DNS搜索域,用于搜索非完全限定的主机名。 要指定多个DNS搜索前缀,请使用多个--dns-search标记。 | | --dns-opt | 表示DNS选项及其值的键/值对。 有关有效选项,请参阅操作系统文档中的resolv.conf。 | | --hostname | 容器本身使用的主机名。 如果未指定,则默认为容器的ID。 |

代理服务器

如果您的容器需要使用代理服务器,请参阅使用代理服务器