Docker 网络

Docker 网络

  • 容器网络
  • 暴露端口
  • IP 地址和主机名
  • DNS 服务


容器网络

容器只看到一个带有IP地址、网关、路由表、DNS服务和其他网络细节的网络接口。容器没有关于它连接的网络类型的信息,无论是 bridge, overlay, macvlan network, custom network plugin。除非容器使用none网络驱动程序。


暴露端口

默认情况下,当使用 docker createdocker run 创建或运行容器时,容器不会将其任何端口暴露给外部。要使端口可供 Docker 之外的服务使用,或者供在不同网络上运行的 Docker 容器使用,使用--publish-p标志。这将在容器中创建防火墙规则,将容器端口映射到 Docker 主机上的端口以供外部使用。

Flag value Description
-p 8080:80 将容器中的TCP端口80映射到 Docker 主机上的端口8080
-p 192.168.1.100:8080:80 将容器中的TCP端口映射到 ip地址为192.168.1.1008080 端口
-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将现有容器连接到不同的网络时,可以使用该命令的--ip--ip6标志指定容器在其他网络上的IP地址。

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


DNS 服务

默认情况下,容器继承主机的DNS设置 (/etc/resolv.conf 文件中的配置)。

主机上的/etc/hosts中定义的自定义主机不会被容器继承。

Flag Description
--dns 指定DNS 服务器IP地址,如果有多个DNS服务器,使用多个 --dns 指定,当无法访问到指定的IP地址时,会默认使用谷歌的公开DNS服务器8.8.8.8,这允许容器解析internet域。
--hostname 指定容器主机名,默认是容器ID



你可能感兴趣的:(Docker,网络,docker,运维)