`

容器网络

阅读更多
    Docker 安装时,默认会创建三个网络,可使用“docker network ls”查看:
$ docker network ls
NETWORK ID          NAME                DRIVER
7fca4eb8c647        bridge              bridge
9f904ee27bf5        none                null
cf03ee007fb4        host                host

    运行容器时,可通过“--network”标记来指定想要连接的网络,不然默认使用的是 bridge 网络。容器中的网络接口 docker0 代表的就是 bridge 网络。
    none 网络可将容器添加到特定于容器的网络堆栈中。那个容器缺少网络接口。使用“docker attach”命令绑定到这样的一个容器,然后查看它的堆栈,就会发现类似下面的情况:
# 没指定使用 none 网络时的情况
$ docker run -itd --name normalcontainer busybox
$ docker attach normalcontainer
/ # cat /etc/hosts
127.0.0.localhost ip6-localhost ip6-loopback
fe00::0 ip6-mcastprefix
ff02::1 ip6-allrouters
172.17.0.2      ad7c6453bb9d
/ #
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1296 (1.2 KiB)  TX bytes:648 (648.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # exit

# 指定 none 网络时的情况
$ docker run -itd --network none --name nonenetcontainer busybox
$ docker attach nonenetcontainer
/ # cat /etc/hosts
localhost::1.0.0.ip6-localnet6-localhost ip6-loopback
ff00::0 ip6-allnodesfix
ff02::2 ip6-allrouters
/ #
/ # ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
/ #
/ # ^p ^q       # 这里按下“Ctrl-p Ctrl-q”可让容器回到后台运行。
$

    而 host 网络是将容器添加到主机的网络堆栈上,也就是让容器与主机之间的网络不再隔离。比如,容器的 80 端口上运行的 Web 服务此时在主机的 80 端口上也能直接访问到。
    none 和 host 网络是不可直接配置的,而 bridge 可以。
    要查看一个或多个网络的详细信息,可以使用“docker network inspect”命令。
    使用默认的 bridge 网络连接的容器之间可以根据 IP 互相通信。由于 Docker 并不支持在默认的 bridge 网络上进行“自动服务发现(Automatic Service Discovery)”,所以若要容器可根据容器名解析出 IP 地址,就应该使用自定义的网络代替(虽然也可使用“docker run --link”选项关联多个容器到 docker0 网络上,但并不推荐)。
    要创建网络,可以使用“docker network create”命令,比如:
        docker network create --driver bridge isolated_nw
    自定义的网络不支持“--link”,但可以在此网络中的容器上发布和公开容器端口。这在想将 bridge 网络的一部分用于外部网络时尤其有用。下图显示了这种关系。

    创建 bridge 网络适用于想在单个主机上运行相对较小的网络时的情况。不过还可以通过创建 overlay 等网络来创建更大的网络。
    Docker 会在下面两种情形下自动创建一个名为 docker_gwbridge 的本地 bridge 网络:
    1、初始化或加入 swarm 时,可用来在不同主机的 swarm 节点之间进行通信。
    2、当没有一个容器网络可以提供对外连接时,除了当前的网络之外,Docker 还会把这个容器连接到 docker_gwbridge 网络,以便该容器能连接到外部网络或其他 swarm 节点。
    但是你也可以提前创建一个自定义的 docker_gwbridge 网络,如下例所示:
$ docker network create --subnet 172.30.0.0/16 \
                        --opt com.docker.network.bridge.name=docker_gwbridge \
			--opt com.docker.network.bridge.enable_icc=false \
			docker_gwbridge

    注意:使用 overlay 网络时,docker_gwbridgw 网络始终存在。
    你还可以在没有外部键值存储区的以 swarm 模式运行的管理器节点上创建一个 overlay 网络。swarm 使得 overlay 网络只对 swarm 中需要服务的节点可用。当使用 overlay 网络创建一个服务时,管理器节点会自动将该网络扩展到运行服务任务的节点。
    下面的示例演示如何创建网络并在 swarm 中的管理器节点中为服务使用它:
$ docker network create --driver overlay \
                        --subnet 10.0.9.0/24 \
                        my-multi-host-network
400g6bwzd68jizzdx5pgyoe95

$ docker service create --replicas 2 --network my-multi-host-network --name my-web nginx
716thylsndqma81j6kkkb5aus

    注意:只有 swarm 服务可以连接到 overlay 网络,而不是单独的容器。
  • 大小: 20.8 KB
分享到:
评论

相关推荐

    思科ACI CNI容器网络解决方案.pdf

    思科ACI CNI(容器网络接口)容器网络解决方案是一套针对容器化应用的网络架构和策略部署方案。随着容器技术的快速发展和应用部署的不断扩大,传统的网络管理方式已经难以满足现代容器云环境下的安全和运维需求。...

    基于深度学习的容器网络异常检测.pdf

    深度学习在容器网络异常检测领域的应用是一项重要的技术进步,随着容器化技术在微服务架构中的普及,其网络异常检测的重要性日益凸显。容器化技术通过虚拟化方案实现了计算机资源的动态分配和调度,提高了资源利用率...

    基于macvlan的Docker容器网络系统的设计与实现1

    【基于macvlan的Docker容器网络系统的设计与实现】 Docker作为现代云环境中广泛使用的容器技术,因其高效、快速的特性受到开发人员和运维人员的青睐。然而,Docker的默认网络模型在大规模部署和复杂网络需求方面...

    Go-一个简单的程序来对各种容器网络CNI插件进行基准测试

    在容器技术领域,CNI(Container Network Interface)是Kubernetes和其他容器编排系统用来配置和管理容器网络的关键组件。Go语言由于其高效、简洁和跨平台的特性,被广泛用于开发此类工具。本项目名为“Go-一个简单...

    Docker学习视频(讲师马永亮)10集之第5集:容器网络

    在本集"Docker学习视频(讲师马永亮)10集之第5集:容器网络"中,马永亮讲师深入讲解了Docker容器网络的关键概念和技术,这对于我们理解和掌握Docker容器的通信机制至关重要。Docker作为一种轻量级的虚拟化技术,其...

    思科ACI CNI容器网络解决方案.pptx

    思科ACI CNI容器网络解决方案.pptx

    vSphere 7云原生容器网络架构概述.pdf

    vSphere 7云原生容器网络架构概述.pdf

    利用DPDK加速容器网络.pdf

    标题“利用DPDK加速容器网络”涉及的IT知识点包括对DPDK技术的理解,容器网络的性能优化,以及DPDK如何在不同容器网络场景中应用以提升网络性能和功能。 描述部分提到容器网络在不同场景下的性能要求,包括高带宽、...

    容器网络介绍.zip

    容器网络介绍 在现代软件开发领域,容器技术已经成为部署和管理应用程序的标准工具,尤其是Docker和Kubernetes等平台的崛起。容器网络是容器技术的重要组成部分,它为容器提供了一个高效、灵活和可移植的网络环境。...

    容器网络实验手册1

    容器网络实验手册1 本实验手册主要介绍了 Docker 容器网络的相关概念和操作,包括 Bridge 网络的创建、容器的网络配置、容器之间的网络通信等。 第一个知识点:Bridge 网络 在 Docker 中,Bridge 网络是一种常用...

    容器网络最佳实践.docx

    容器网络最佳实践主要聚焦于如何在容器环境中有效地管理和配置网络,以便容器间的通信以及与外部世界的交互。在本文中,我们将探讨容器网络的基本概念、Kubernetes 的角色、AWS VPC 路由表的运用,以及网络数据包的...

    容器网络架构设计指南.pptx

    容器网络架构设计是现代云原生应用部署的关键组成部分,它涉及到如何在容器环境中高效、安全地实现网络通信。本指南将深入探讨容器网络的基本概念、关键组件以及常见架构模式。 首先,容器是一种轻量级的运行时环境...

    6. Kubernetes容器网络1

    在Kubernetes环境中,容器网络是实现服务之间通信的关键部分。Kubernetes使用了一种抽象的网络模型,使得每个Pod(Pod包含一个或多个容器)都像是一个独立的网络节点,拥有自己的IP地址,并且可以在集群内无缝通信。...

    阿里云云原生容器网络实践.pptx

    阿里云云原生容器网络实践是针对现代云计算环境中容器网络的一种解决方案,旨在提供高效、灵活且可扩展的网络架构。以下将详细介绍容器网络的背景、虚拟化网络的概念以及阿里云如何实现云原生容器网络。 容器技术是...

    NSX-T 加持K8s OCP构建企业级容器网络.pptx

    NSX-T 加持 K8s OCP 构建企业级容器网络 在这个 pptx 文件中,我们可以看到 NSX-T 加持 K8s OCP 构建企业级容器网络的解决方案。下面我们将详细介绍标题、描述、标签和部分内容中所涉及的知识点。 首先,我们可以...

    360在容器网络部署的实践.pptx

    【360在容器网络部署的实践】 容器技术的崛起为IT行业带来了革命性的变化,同时也对传统网络架构提出了新的挑战。360作为一家网络安全公司,在容器网络部署上进行了深入实践,旨在优化网络架构,实现自动化部署,并...

    30-容器网络之Flannel:每人一亩三分地1

    Flannel 是 Kubernetes 集群中广泛使用的网络插件,它的主要任务是为集群中的每个节点分配一个独立的子网,从而解决跨主机的容器间通信问题。在Flannel的网络模型中,每个节点(物理机)都会从大的172.17.0.0/16网段...

    构建高性能云原生容器网络.pdf

    《构建高性能云原生容器网络》一书深入探讨了如何在云环境中构建高效、可靠的容器网络,以适应现代微服务架构的需求。书中首先对Kubernetes容器网络进行了全面概述,包括Pod网络连通性、Service负载均衡和服务发现...

    360在容器网络部署的实践.pdf

    本实践主要探讨了在容器网络方案的选择、360的网络架构优化、自动化部署以及配置优化等方面的关键知识点。 首先,针对容器网络方案的选取,360公司对比了三种主流的解决方案:Calico、Flannel和Weave。Calico以其纯...

Global site tag (gtag.js) - Google Analytics