做的网站在百度上搜不出来的,怎么把危险网站,怎么创建网站根目录,怎么用flash做游戏下载网站docker提供了三种自定义网络驱动#xff1a;bridge、overlay、macvlan。 bridge驱动类似默认的bridge网络模式。 overlay和macvlan是用于创建跨主机网络。 支持自定义网段、网关#xff0c;docker network create --subnet 172.77.0.0/24 --gateway 172.77.0.1 my_n…· docker提供了三种自定义网络驱动bridge、overlay、macvlan。
· bridge驱动类似默认的bridge网络模式。
· overlay和macvlan是用于创建跨主机网络。
· 支持自定义网段、网关docker network create --subnet 172.77.0.0/24 --gateway 172.77.0.1 my_net。
· docker创建容器使用默认docker0网络不支持自定义固定IP都是动态的。
常用网络管理工具
apt install net-tools //ifconfig 查看网卡配置 推荐使用 ip addr查看网卡信息
apt install dnsutils // nslookup 一、bridge创建单机
当你在Docker中创建bridge虚拟网络虚拟网桥时Docker会同时创建一个与该虚拟网络相关的虚拟网卡 Docker Bridge 网络的原理
1.网桥Bridge网桥是一个虚拟的二层设备它允许多个容器连接到同一个网络。Docker 在主机上创建一个名为 docker0 的网桥默认分配网桥的 IP 地址为 172.17.0.1/16。主机上的容器可以连接到 docker0 网桥并通过该网桥与其他容器进行通信。
2.容器接口和 IP 分配每当创建一个容器时Docker 创建一个虚拟网络接口 veth 对并在容器内部分配一个唯一的 IP 地址。该 veth 对的一端连接到容器的网络命名空间另一端连接到 docker0 网桥。通过这种方式容器能够与其他容器和主机进行通信。
3.IP 数据包的转发当容器之间需要进行通信时Docker Bridge 网络使用 IP 转发机制将数据包从一个容器转发到另一个容器。它通过在主机上设置转发规则实现转发确保数据包能够正确地传递到目标容器。
4.网络地址转换NAT通过 Docker Bridge 网络容器可以通过主机访问外部网络。Docker 使用网络地址转换NAT技术将容器的私有 IP 地址映射为主机的公共 IP 地址以实现容器与外部网络的通信。 docker network ls //查看docker虚拟网络
NETWORK ID NAME DRIVER SCOPE
b483c4f42a0d bridge bridge local
docker network inspect bridge //如下所示 就是虚拟网桥的name 通过brctl show 可查看宿主机上网桥信息需要安装bridge-utils软件包
可以通过ifconfig docker0 查看对应的虚拟网卡配置信息(推荐使用 ip addr查看网卡信息)。 二、macvlan创建
Docker 内置的 Macvlan 驱动Windows 上是 Transparent通过为容器提供 MAC 和 IP 地址让容器在物理网络上成为“一等公民”。它允许Docker容器直接通过物理网络接口使用宿主机的MAC地址。Macvlan网络驱动程序使得每个容器都能获得唯一的MAC地址就像宿主机的物理或虚拟机网卡一样 使用Macvlan网络驱动程序时每个容器都可以直接与宿主机所连接的物理网络通信就像它们是网络中的独立设备一样。这使得容器能够实现与网络上的其他设备直接进行通信而不需要进行NAT转换
Macvlan 的优点是性能优异无须端口映射或者额外桥接可以直接通过主机接口或者子接口访问容器接口。Macvlan 的缺点是需要将主机网卡NIC设置为混杂模式Promiscuous Mode这在大部分公有云平台上是不允许的。
Macvlan 对于公司内部的数据中心网络来说很棒假设公司网络组能接受 NIC 设置为混杂模式但是 Macvlan 在公有云上并不可行。
# 所有主机均需开启网卡混杂模式
ip link set ens192 promisc on docker network create -d macvlan --subnet10.3.1.0/8 --ip-range10.3.1.0/8 --gateway10.1.1.1 -o parentens160 macvlan
--subnet10.0.0.0/24macvlan的IPv4网段
--gateway10.0.0.1macvlan的IPv4网关
--ipv6启用IPv6支持
--subnetfd00::/60macvlan的IPv6前缀
--gatewayfd00::1macvlan的IPv6网关
-o parentens192桥接网络走的接口名称 docker run -itd --namenode-1 -v /data:/data --networkmacvlan --ip10.3.1.145 993a4cf9c1e8 Macvlan 也支持 VLAN 的 Trunk 功能。可以在相同的 Docker 主机上创建多个 Macvlan 网络并且将容器按照下图的方式连接起来。 默认情况下各个macvlan容器之间可以通讯但是不能与宿主机进行通讯
主要原因为了安全而禁止互通. 如宿主机ping容器的ip尽管他们属于同一网段但也是ping不通的反过来也是。 如果想要实现互通有个曲线救国的方法就是macvlan与macvlan之间可以互通只需要在宿主机再创建一个macvlan网络然后修改路由让数据经过这个macvlan达到互通的目的。
宿主机 10.3.1.45 ens160 255.0.0.0
docker容器 10.3.2.146
# 创建一个名为macvlan_host的macvlan虚拟接口并桥接到ens160物理接口上
ip link add macvlan_host link ens160 type macvlan mode bridge
# 为macvlan_host接口添加一个10.3.2.2的IP
# ip addr add 10.3.2.2 dev macvlan_host
# 开启macvlan_host接口
ip link set macvlan_host up
# 新增路由使到macvlan容器的数据包由macvlan_host发出
ip route add 10.3.2.146 dev macvlan_host //或者ip route add 10.3.2.0/24 dev macvlan_host
macvlan容器与宿主机在同一网段的情况下macvlan_host不需要配置IP
ip link show //link查看
然后在宿主机ping 10.3.2.146即可ping通。 三、overlay创建跨主机
由于Linux内核设置的限制当1000 个容器位于同一主机上时覆盖网络会变得不稳定容器间通信可能会中断
如果部署的服务非常多推荐使用host模式(共用宿主机网络,不需要nat转发)并自行维护iptables转发规则和负载均衡。 在 Docker Overlay 网络中并不会创建单独的虚拟网卡而是使用 VXLAN 技术在主机之间建立隧道来实现容器之间的通信利用底层网络的网络设备来传输数据。这样可以实现多个主机上的容器与网络的统一管理提供了分布式容器网络的功能。
Docker 集群会生成两种不同类型的流量
1.控制和管理平面流量这包括集群管理消息例如加入或离开集群的请求。此流量始终是加密的。
2.应用程序数据平面流量这包括容器流量以及进出外部客户端的流量。
docker swarm overlay网络 容器通过gw_bridge桥接在宿主机上若是集群内服务则走IPVS若外网或集群外的服务器则走宿主机转发出去 以下三个网络概念对集群服务很重要:
1.overlay覆盖网络管理参与集群的Docker守护进程之间的通信。您可以创建覆盖网络就像为独立容器创建用户定义的网络一样。您还可以将服务附加到一个或多个现有的覆盖网络以启用服务到服务的通信。覆盖网络是使用覆盖网络驱动程序的Docker网络。
2.ingress入口网络是一种特殊的覆盖网络可以促进服务节点之间的负载均衡。当任何集群节点在已发布的端口上接收到请求时它将该请求传递给称为IPVS的模块。IPVS跟踪参与该服务的所有IP地址选择其中一个并通过入口网络将请求路由到它。
入口网络在初始化或加入集群时自动创建。大多数用户不需要自定义它的配置但是Docker允许你这样做。
3.docker_gwbridge是一个桥接网络它将overlay覆盖网络(包括ingress入口网络)连接到单个Docker守护进程的物理网络。默认情况下服务运行的每个容器都连接到其本地Docker守护进程主机的docker_gwbridge网络。
docker_gwbridge 是一个特殊的桥接bridge网络用于连接主机网络与Docker Overlay网络之间的网桥。并提供代理节点间通信的功能。它允许容器与外部网络进行通信。
在初始化或加入集群时自动创建docker_gwbridge网络。大多数用户不需要自定义它的配置但是Docker允许你这样做。 Docker Overlay网络的实现原理如下
1.创建Overlay网络在Docker Swarm集群中可以通过运行docker network create命令来创建Overlay网络。这将创建一个虚拟网络其中包含集群中的所有Docker主机。
VXLAN在创建Overlay网络时Docker引擎会自动为每个Docker主机创建一个VTEPVXLAN Tunnel Endpoint。VTEP负责将容器网络数据封装成VXLAN报文并通过底层网络进行传输。
2.连接容器当创建一个容器并将其连接到Overlay网络时Docker引擎会为该容器分配一个唯一的IP地址并将其添加到Overlay网络中。
3.数据传输当容器之间需要进行通信时发送方容器会将网络数据封装成VXLAN报文并通过底层网络发送给接收方容器所在的主机。接收方主机上的VTEP会解封装VXLAN报文提取出原始的网络数据并将其传递给目标容器。VXLAN报文通过底层网络传输主要使用UDP协议并使用标准的4789端口。
4.负载均衡在Overlay网络中Swarm Mode会自动进行服务负载均衡。Swarm Mode会根据容器部署的策略将请求均匀地分发给网络中的各个容器。 docker swarm init 创建一个manager docker swarm join-token -q worker //manager 输出添加节点所需token
//在其他节点执行命令加入此的swarm集群使用上面输出的token
docker swarm join 10.1.1.115:2377 --token SWMTKN-1-2rcj8zj7rsajg6nm8difk3crs1n7r81d6nb9dwz4e44amyg3y9-63x165r4mapwza9dlfc8u9lib docker node ls来查看节点状态 查看所有节点的network ( docker network ls), 它们现在都有一个名为 ingress 的 overlay 网络和一个名为 docker_gwbridge 是 bridge 网络 docker_gwbridge 将 ingress 网络连接到 Docker 宿主机的网络接口上这样流量就可以在 swarm管理者和 worker 之间流动。如果你创建了 swarm 服务但没有指定网络它们就会被连接到 ingress 网络上。建议你为每个应用程序或将一起工作的应用程序组使用单独的 overlay 网络。
docker_gwbridge 的enable_icc 设置成false gwbridge 只是用来提供外网访问不提供容器间访问容器间的通信应该通过overlay网络。
docker inspect docker_gwbridge 容器内ping 8.8.8.8能ping通即可( 若ping不通可能是存在网段冲突之类的问题尝试删掉然后重新创建一个docker_gwbridge网络或者重新建一个纯净虚拟机配置环境 ) 创建overlay网络要求必须是swarm集群中的节点否则会报错。
在 manager 上创建一个新的 overlay 网络。不需要在其他节点上创建 overlay 网络因为当这些节点开始运行一个需要它的服务任务时网络将自动创建。
docker network create -d overlay --subnet 10.3.1.0/8 --gateway 10.1.1.1 --attachable overlay --opt encrypted 在它们的vxlan流量启用附加的加密层启用加密。 --subnet 指定overlay网络使用的子网网段。当不指定一个子网时swarm管理器自动选择一个子网并分配给网络。 --attachable 要创建一个既能用于集群服务又能用于单独的容器来和其他docker守护进程中的单独的容器进行通信的网络加上--attachable标记