Docker跨主机网络-overlay

Docker网络教程(三)overlay 网络教程 演示了如何创建和使用你自己的自定义 overlay 网络,以连接服务。建议在生产环境中运行的服务使用这个方法。 阅读详情

一、前言Docker网络

 

1、单 Docker Host 容器通信网络方案

none、host、bridge 和 joined 容器

2、跨主机容器间通信网络方案

A、Docker 原生 Network 的 overlay 和 macvlan

B、第三方方案常用的有 flannel、weave 和 calico

N方案如何与 Docker 集成?

利用: libnetwork 以及 CNM

2.1、libnetwork & CNM

libnetwork 是 Docker 容器网络库

Container Network Model (CNM)是libnetwork的核心,对容器网络抽象化,由以下三类组件组成:

Sandbox

Sandbox 是容器的网络栈,包含容器的 interface、路由表和 DNS 设置

Linux Network Namespace 是 Sandbox 的标准实现

Sandbox 可以包含来自不同 Network 的 Endpoint

Endpoint

Endpoint 作用是将 Sandbox 接入 Network

Endpoint 典型实现是 veth pair

1个 Endpoint 只能属于一个网络,且只能属于一个 Sandbox

Network

Network 包含一组 Endpoint

同1个 Network 的 Endpoint 可直接通信

Network 的实现可以是 Linux Bridge、VLAN 等

CNM 示例:

如上图所示:

2个容器,1个容器1个 Sandbox,每个 Sandbox 都有1个 Endpoint 连接到 Network 1,第2个 Sandbox 还有1个 Endpoint 是接入到了 Network 2

libnetwork CNM 定义了 Docker Container的网络模型,按照该模型开发出的 driver 能与 docker daemon 协同工作,实现Container Network

Docker 原生的 driver 包括 none、bridge、overlay 和 macvlan

第三方 driver 包括 flannel、weave、calico 等

 

二、Docker Overlay Network 环境

Docker 提供了 overlay driver,可创建基于 VxLAN 的 overlay 网络

VxLAN 将二层数据封装到 UDP 进行传输,VxLAN 提供与 VLAN 相同的以太网二层服务,并且拥有更强的扩展性和灵活性

什么是overlay网络

overlay网络用于连接不同机器上的docker容器,允许不同机器上的容器相互通信,同时支持对消息进行加密,当我们初始化一个swarm或是加入到一个swarm中时,在docker主机上会出现两种网络:

第一种、称为ingress的overlay网络

用于传递集群服务的控制或是数据消息,若在创建swarm服务时没有指定连接用户自定义的overlay网络,将会加入到默认的ingress网络

第二种、名为docker_gwbridge桥接网络

docker_gwbridge桥接网络会连接swarm中所有独立的docker系统进程

可以使用docker network create创建自定义的overlay网络,容器以及服务可以加入多个网络,只有同一网络中的容器可以相互交换信息,可以将单一容器或是swarm服务连接到overlay网络中,但是两者在overlay网络中的行为会有所不同,接下来会描述两者在overlay网络中的共同行为以及不同行为

注意事项:

如果想要连接到overlay网络,请确保连接前下列端口没有服务,并且服务器防火墙要允许下列端口通过:

TCP端口2377,用于集群管理信息的交流

TCP、UDP端口7946用于集群中节点的交流

UDP端口4789用于overlay网络中数据报的发送与接收

1、搭配key-value 数据库

Docerk overlay 网络需要1个 key-value 数据库来保存网络状态信息,包括 Network、Endpoint、IP 等

Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件,此处使用 Consul

2、环境描述

使用docker-machine 创建的实验环境

  1. 跨主机的2台Docker 主机

Docker 主机 host02(192.168.233.144)和 host03(192.168.233.145)上实践各种跨主机网络方案

B、部署组件

主机 docker-centos (192.168.233.143) 上部署支持的组件,如: Consul

简单方式--容器方式运行 Consul

Consul可以用来实现分布式系统的服务发现与配置,它是HashiCorp公司推出的一款实用开源工具,支持Linux等平台。Consul是分布式的、高可用的、可横向扩展的。

Consul具备的特性:

服务发现: Consul提供了通过DNS或者HTTP接口的方式来注册服务和发现服务。一些外部的服务通过Consul很容易的找到它所依赖的服务。

健康检测: Consul的Client提供了健康检查的机制,可以通过用来避免流量被转发到有故障的服务上。

Key/Value存储: 应用程序可以根据自己的需要使用Consul提供的Key/Value存储。Consul提供了简单易用的HTTP接口,结合其他工具可以实现动态配置、功能标记、领袖选举等等功能。

多数据中心: Consul支持开箱即用的多数据中心. 这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域。

执行指令:

docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

docker run -d \

--restart="always" \

-p="8500:8500" \

-hostname="consul" \

--name="consul" \

progrium/consul  -server  -bootstrap

访问 Consul:

http://192.168.233.143:8500

C、修改 docker daemon 配置文件

host02 和 host03 配置文件

cat /etc/systemd/system/docker.service.d/10-machine.conf

实际内容:Docker version 19.03.11

vi  /etc/systemd/system/docker.service.d/10-machine.conf

追加

--cluster-store=consul://192.168.233.143:8500   --cluster-advertise=ens33:2376

 

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic  --cluster-store=consul://192.168.233.143:8500   --cluster-advertise=ens33:2376

配置解析:

--cluster-store 指定 consul 的地址

--cluster-advertise 告知 consul 自己的连接地址

 

D、重启 docker daemon

systemctl status docker.service

systemctl daemon-reload  

systemctl restart docker.service

systemctl status docker.service

 

 

E、观察结果

host02 和 host03 将自动注册到 Consul 数据库中

 

三、创建 overlay 网络

1、在 host02 服务器上创建 overlay 网络 overlay_net01

docker  network  create  -d  overlay  overlay_net01

-d  overlay  指定 driver 为 overlay

2、host03上查看当前网络

docker  network  ls  

原理解释:

host03 上也能看到 overlay_net01,因为创建 overlay_net01 时 host02 将 overlay 网络信息存入了 consul,host03 从 consul 读取到了新网络的数据。之后 overlay_net01 的任何变化都会同步到 host02 和 host3

3、查看 overlay_net01 的详细信息

docker  network  inspect  overlay_net01

docker  network  inspect  overlay_net01

[

    {

        "Name": "overlay_net01",

        "Id": "9ebb22fd5d745f1c8715032c4e76053603c31045accbddf1308d2444b89c259a",

        "Created": "2020-06-16T16:53:00.071749316+08:00",

        "Scope": "global",

        "Driver": "overlay",

        "EnableIPv6": false,

        "IPAM": {

            "Driver": "default",

            "Options": {},

            "Config": [

                {

                    "Subnet": "10.0.0.0/24",

                    "Gateway": "10.0.0.1"

                }

            ]

        },

        "Internal": false,

        "Attachable": false,

        "Ingress": false,

        "ConfigFrom": {

            "Network": ""

        },

        "ConfigOnly": false,

        "Containers": {},

        "Options": {},

        "Labels": {}

    }

]

IPAM 是指 IP Address Management,docker 自动为 overlay_net01 分配的 IP 空间为 10.0.0.0/24

 

四、在 overlay 中运行容器

1、在host02上,运行1个 busybox 容器并连接到 overlay_net01

docker  run  -itd  --name  busybox-01  --network  overlay_net01  busybox

2、查看容器网络配置

docker  exec  busybox-01  ip  r

busybox-01 有两个网络接口 eth0 和 eth1

eth0 IP 为 10.0.0.2,连接的是 overlay 网络 overlay_net01

eth1 IP 172.17.0.2,容器的默认路由是走 eth1,eth1 是哪儿来的呢?

其实,docker 会创建一个 bridge 网络 “docker_gwbridge”,为所有连接到 overlay 网络的容器提供访问外网的能力

3、查看 docker_gwbridge 详情信息

docker  network  inspect  docker_gwbridge

docker  network  inspect  docker_gwbridge

[

    {

        "Name": "docker_gwbridge",

        "Id": "192f1d193f83f81c836842b0a339e5097e04aaf3341c2f7909d913335ac194dc",

        "Created": "2020-06-16T17:23:20.698017508+08:00",

        "Scope": "local",

        "Driver": "bridge",

        "EnableIPv6": false,

        "IPAM": {

            "Driver": "default",

            "Options": null,

            "Config": [

                {

                    "Subnet": "172.18.0.0/16",

                    "Gateway": "172.18.0.1"

                }

            ]

        },

        "Internal": false,

        "Attachable": false,

        "Ingress": false,

        "ConfigFrom": {

            "Network": ""

        },

        "ConfigOnly": false,

        "Containers": {

            "42fbbcdeacd351701163986bc920f5e70af72f8d72d9d4d36817d8120c3a90f5": {

                "Name": "gateway_297bdad64327",

                "EndpointID": "adf1f97c040f78792e0ea94db272ddfccc276e5ec77e6f891a1d639a423d8997",

                "MacAddress": "02:42:ac:12:00:02",

                "IPv4Address": "172.18.0.2/16",

                "IPv6Address": ""

            }

        },

        "Options": {

            "com.docker.network.bridge.enable_icc": "false",

            "com.docker.network.bridge.enable_ip_masquerade": "true",

            "com.docker.network.bridge.name": "docker_gwbridge"

        },

        "Labels": {}

    }

]

IP 地址范围是 172.18.0.0/16,当前连接的容器就是 busybox-01  (172.18.0.2)

172.18.0.0/16网络的网关就是网桥 docker_gwbridge 的 IP 172.18.0.1

ifconfig   docker_gwbridge

4、验证与外网的连通性

A、访问外网

容器 busybox-01 就可通过 docker_gwbridge 访问外网

docker  exec  busybox-01  ping  -c  3  www.baidu.com

B、外网访问容器

如果外网要访问容器,可通过主机端口映射,比如:

docker  run  -p  80:80  -d  --net overlay_net01  --name web1  httpd

五、overlay 实现跨主机通信--连通性

1、在 host03 中运行容器 busybox-02

docker  run  -itd  --name  busybox-02  --network  overlay_net01  busybox

docker  exec  busybox-02  ip  r

【问题记录】创建容器时,报:docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 144.144.144.144:53: read udp 192.168.233.149:41512->144.144.144.144:53: i/o timeout.

【解决方法】vi /etc/docker/daemon.json

{

"registry-mirrors":["https://49c47s26.mirror.aliyuncs.com"]

}

systemctl restart docker

2、host03上的busybox-02与host02上的busybox-01网络

busybox-02 IP 为 10.0.0.4,可以直接 ping busybox-01

docker  exec  busybox-02  ping  -c 3 busybox-01

docker  exec  busybox-02  ping  -c 3 10.0.0.2

overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务

3、overlay 网络的具体实现

docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 Linux bridge br0,endpoint 还是由 veth pair 实现,一端连接到容器中(即 eth0),另一端连接到 namespace 的 br0 上

br0 除了连接所有的 endpoint,还会连接一个 vxlan 设备,用于与其他 host 建立 vxlan tunnel。容器之间的数据就是通过这个 tunnel 通信的

4、查看 overlay 网络的 namespace

在 host02 和 host03 上执行 ip netns(请确保在此之前执行过 ln -s /var/run/docker/netns /var/run/netns),可以看到两个 host 上有一个相同的 namespace “1-9ebb22fd5d”

ln -s /var/run/docker/netns /var/run/netns

ip netns

[root@host02 ~]# ip netns

ae08955cc1c2 (id: 1)

1-9ebb22fd5d (id: 0)

[root@host03 ~]# ip netns

e5d25e449779 (id: 1)

1-9ebb22fd5d (id: 0)

5、查看 namespace 中的 br0 上的设备

这就是 overlay_net01 的 namespace

ip  netns  exec  1-9ebb22fd5d  brctl  show

可见 namespace 中的 br0 上的设备vxlan0

【问题记录】[root@host02 ~]# ip  netns  exec  1-9ebb22fd5d  brctl  show

exec of "brctl" failed: No such file or directory

【解决方法】先安装

yum install -y bridge-utils

6、查看 vxlan0 设备的具体配置信息

ip  netns  exec 1-9ebb22fd5d  ip  -d  l  show  vxlan0

可见 overlay 使用的 VNI(VxLAN ID)为 256

vxlan0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default

    link/ether 66:48:73:e2:77:52 brd ff:ff:ff:ff:ff:ff link-netnsid 0 promiscuity 1

    vxlan id 256 srcport 0 0 dstport 4789 proxy l2miss l3miss ageing 300 noudpcsum noudp6zerocsumtx noudp6zerocsumrx

bridge_slave state forwarding priority 32 cost 100 hairpin off guard off root_block off fastleave off learning on flood on port_id 0x8001 port_no 0x1 designated_port 32769 designated_cost 0 designated_bridge 8000.66:48:73:e2:77:52 designated_root 8000.66:48:73:e2:77:52 hold_timer    0.00 message_age_timer    0.00 forward_delay_timer    0.00 topology_change_ack 0 config_pending 0 proxy_arp off proxy_arp_wifi off mcast_router 1 mcast_fast_leave off mcast_flood on addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

 

六、overlay 的网络隔离特性

不同的 overlay 网络是相互隔离的

1、创建第二个 overlay 网络 overlay_net02 并运行容器 busybox-03

docker  network  create  -d  overlay  overlay_net02

docker  run  -itd  --name  busybox-03  --network  overlay_net02  busybox

docker  exec  -it  busybox-03  ip  r

busybox-03 分配到的 IP 是 10.0.1.2,尝试 ping busybox-01(10.0.0.2)

docker  exec  -it  busybox-03  ping  -c  3  10.0.0.2

可见:overlay_net02 中的 busybox-03 ping overlay_net01 中的 busybox-01 失败,可见不同 overlay 网络之间是隔离的。即便是通过 docker_gwbridge 也不能通信

2、实现 busybox-03 与 busybox-01 通信

将 busybox-03 也连接到 overlay_net01

docker  network  connect  overlay_net01  busybox-03

尝试再次 ping busybox-03

docker  exec  -it  busybox-03  ping  -c  3  busybox-01

3、指定overlay 网络 IP 空间

overlay IPAM

docker 默认为 overlay 网络分配 24 位掩码的子网(10.0.X.0/24),所有主机共享这个 subnet,容器启动时会顺序从此空间分配 IP

--subnet 指定 IP 空间

docker  network  ls

docker network create -d overlay --subnet 10.10.1.0/24 overlay_net03

4、查看 overlay_net03 详情

docker network inspect overlay_net03

[root@host02 ~]# docker network inspect overlay_net03

[

    {

        "Name": "overlay_net03",

        "Id": "beb14c4386f9f947754531c5ee53c054cbcc9a6b8f63a6d954f27db824ebf7c1",

        "Created": "2020-06-21T02:31:05.632006303+08:00",

        "Scope": "global",

        "Driver": "overlay",

        "EnableIPv6": false,

        "IPAM": {

            "Driver": "default",

            "Options": {},

            "Config": [

                {

                    "Subnet": "10.10.1.0/24"

                }

            ]

        },

        "Internal": false,

        "Attachable": false,

        "Ingress": false,

        "ConfigFrom": {

            "Network": ""

        },

        "ConfigOnly": false,

        "Containers": {},

        "Options": {},

        "Labels": {}

    }

]

详情请见,微信公众号

 

Docker学习:跨宿主机通信 | overlay和macvlay(理论+实战篇) 尽管overlay(overlay2)和macvlan都可以实现跨宿主机通信,但是相对的前者更为便捷一些,但是随着新容器编排技术的不断涌现,这些当时时髦的技术也终将被替代。就连docker官网自己推出的Docker-compose[官网](它是一个单机多容器部署工具,不支持多机)编排工具,也正在被k8s(支持多容器、多机部署)替代,后续将陆续对这些编排工具做具体介绍。 不过这些不重要,长江后浪推前浪,k8s终究是配置太多,强大的同时也太繁琐,终将会被更强大的其他替代,万变不离其宗,了解了这些底层些的知识,再 阅读详情

相关推荐

【docker系列】consul+overlay实现容器跨主机网络通信

上面配置的含义是通过当前宿主机的enp0s3:2375(docker守护进程服务),与consul集群中的192.168.1.111:8500的节点进行通信(注册)。在zimug2、zimug3的服务器上执行下列命令,将zimug2、zimug3的consul服务join到zimug1的consul服务上,这样它们三个组成一个集群。在三台服务器上zimug1、zimug2、zimug3中选择2个服务器,分散跨主机创建2个容器,使用multihost的overlay网络。(暂时没找到好的解决方案)

2301_79098332的博客 1161

docker overlay网络详解

之前我们学习的网络是单台主机的网络通讯方案,这里我们学习的是跨跨主机。 我们原生的docker跨主机方案有macvlan和overlay,这里我们重点学习overlay 第三方网络插件有flannel,calico,weave网络。 docker网络之所以这么活跃,是因为网络部分的代码单独抽离出来成为docker的网络库,即libnetwork。 为了标准化网路驱动的开发步骤和支持各种网络驱动,libnetwork中使用了CNM(container network model),CNM定义了构建容器

leechm的博客 1万+

Docker基础教程(152)docker网络模式之overlay模式:Docker网络魔法:Overlay模式如何让容器跨主机「网恋」?

Overlay网络是Docker的分布式网络魔法,让容器跨越物理主机直接通信。就像给数据包穿上「隐身衣」,通过加密隧道在主机间安全传输。本文将深度剖析Overlay网络的工作原理,揭秘其如何借助VXLAN技术实现跨主机组网,并附完整实战示例,带你从零构建分布式容器网络,体验丝滑的多主机容器通信。

jxf_jxfcsdn的博客 1117

docker中的overlay网络详解

Docker的overlay网络详解

baidu_38956956的博客 5329

OpenMMLab实战指南:从环境搭建到首个检测模型运行

本文是一份详细的OpenMMLab实战指南,重点介绍了如何从零开始搭建环境并运行首个目标检测模型。内容涵盖Miniconda环境配置、PyTorch与CUDA版本匹配、使用MIM工具安装MMCV和MMDetection的核心步骤,并通过RTMDet-tiny模型演示了完整的推理流程,帮助开发者高效入门这一计算机视觉开源算法体系。

weixin_28678151的博客 157

WPF+Prism+LiveCharts+materialdesignin 搭建WPF开发框架

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容。

T_Tboy的博客 3052

Docker 跨主机网络 overlay(十六)

一、跨主机网络概述 前面已经学习了 Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题。本章的重点则是讨论跨主机容器间通信的方案。 docker 原生的 overlay 和 macvlan。第三方方案:常用的包括 flannel、weave 和 calico。 二、准备 overlay 环境 为支持...

weixin_34029949的博客 501

统信UOS专业版服务器无人值守安装

(2)、专业版:主要针对整机厂商、政府单位、事业单位和企业用户使用,cpu目前支持x86、arm、mips、sw64和LoogngArch架构,试用期免费获得90天的使用,随后需要单位采购授权,获得正式激活码后才可以正常使用。其中企业版代号为d,行业版为a/c,欧拉版则为e,在最近的更新中,c版已经停止更新迭代,后续行业版本将都为a版,版本代号体现在镜像名字中以及版本号上,例如1050d则表示企业版1050版本。UOS系统服务器版本分为:专业版(d版)、行业版(a版)、欧拉版(e版)

靠谱运维 2252

主机overlay和网络overlay_Docker跨主机网络overlay

Docker跨主机网络-overlay一、前言Docker网络1、单 Docker Host 容器通信网络方案none、host、bridge 和 joined 容器2、跨主机容器间通信网络方案A、Docker 原生Network 的 overlay 和 macvlanB、第三方方案常用的有flannel、weave 和 calicoN方案如何与 Docker 集成?利用: libn...

weixin_39693101的博客 2032

Hiblup入门指南:从下载到基础应用

本文是Hiblup软件的入门指南,详细介绍了这款遗传评估工具的核心功能与价值。Hiblup能整合系谱、基因组和表型数据,高效计算估计育种值,助力动物育种与植物遗传改良研究。文章从软件下载安装、数据格式准备,到运行系谱BLUP和基因组BLUP分析,提供了清晰的实战步骤与命令示例,帮助用户快速上手并应用于实际科研与育种工作。

weixin_29209825的博客 495

brpc组件bvar源码解析(一)简介、使用和类的关系

bvar是brpc中的一个重要组件,brpc内部有很多builtin监控都是bvar实现的。 brpc文档介绍bvar“几乎不会给程序增加性能开销,也快于竞争频繁的原子操作”。它的原理是:多线程累加一个计数器时,每个线程只累加私有的变量而不参与全局竞争,因此写时没有锁的竞争;在读取时累加所有线程的私有变量。虽然读比之前慢多了,但写就快多了,因此它使用写多读少的场景,例如统计、监控场景。 1.使用 // bvar::Adder<T>用于累加,下面定义了一个统计read error总数的Adder。

华秋实的专栏 1852

Docker跨主机网络——overlay

一、Docker 跨主机通信 Docker跨主机网络方案包括: docker 原生的 overlay 和 macvlan。 第三方方案:常用的包括 flannel、weave 和 calico。 docker 通过 libnetwork 以及 CNM 将上述各种方案与docker集成在一起。 libnetwork 是 docker 容器网络库,最核心的内容是其定义的 Container Network Model (CNM),这个模型对容器网络进行了抽象,由以下三类组件组成: 1.1 Sandbox San

xgp666的博客 1113

[QMT量化交易小白入门]-二、如何用miniQMT获取沪深A股的板块列表、历史行情数据和实时行情数据

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 5659

docker跨主机网络——overlay与macvlan

docker的跨主机网络 解决方案一:overlay的解决方案 ???? 默认的自定义网络的类型就是bridge,但是无法在单宿主机网络里面的可以通过docker network connect的命令互通;但是跨主机的时候bridge就明显不可用的;可以使用overlay和macvlan实现 为支持容器跨主机通信,Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络。VxLAN 可将二层数据封装到 UDP 进行传 输,VxLAN 提供与 VLAN 相同

Mr.李的博客 1661

PCL 平面点云的凹多边形边界提取【2025最新版】

平面点云的凹多边形边界提取及边界轮廓线绘制。博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 7183

QGIS编译(跨平台编译)001:Flex、Bison编译(安装)(Windows、Linux、MacOS环境下安装)

QGIS编译;Flex、Bison编译(安装)(Windows、Linux、MacOS环境下安装)

LuckyHanMo的博客 3080

Docker 1.9 Overlay Network实现跨主机网络互通

11月4日,Docker发布了1.9版本,实现了原本实验性的Networking组件的支持。用户可以在Swarm中使用它或者将其作为Compose 工具。创建虚拟网络并将其连接到容器上,可实现多个主机上容器相互通信,并且实现不同的应用程序或者应用程序不同部分能够相互隔离。互联子系统设计为可插拔式,兼容VXLAN或者IPVLAN等技术。 Docker 容器实现跨主机通讯主要通过几种方式:自

jasko的专栏 6836

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

19、docker跨主机网络 Overlay\Underlay

参考来源: Overlay和Underlay网络协议区别及概述讲解 ,Docker的跨主机网络,Docker 三种网络驱动,bridge,overlay创建,多主机网络共享 overlay,纳米ai,什么是VXLAN前提说明跨主机网络模型有两种网模型,其中有五种代表方案

梁正雄,乱七八糟的都研究研究 1099

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Docker跨主机网络配置方案之overlay

一、跨主机网络概述 前面已经学习了 Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题。本章的重点则是讨论跨主机容器间通信的方案。 docker 原生的 overlay 和 macvlan。 第三方方案:常用的包括 flannel、weave 和 calico。 二、准备 overla...

7B_Geek的博客 1799

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

通过 Docker Swarm 集群探究 Overlay 网络跨主机通信原理

如题

pcj_888的博客 1746

Docker- 7.2、跨主机网络-overlay

跨主机网络方案overlay

无痕的博客 2398

docker 跨主机通讯之overlay网络

docker 跨主机通讯之overlay网络准备阶段打开混杂模式创建一个自己的overlay docker network不同主机docker内容器通讯准备阶段搭建consul修改``docker.service``启动参数开启路由转发测试原理 准备阶段 打开混杂模式 如何查看网卡我想应该都会,下方ens33为我的网卡名。 ifconfig ens33 promisc # ifconfig ens33 -promisc 去除混杂模式 创建一个自己的overlay docker network #

Doub1's Blog 783

【云原生】Docker网络Overlay搭建Consul实现跨主机通信

每个Docker主机上的容器都可以加入Overlay网络,并且它们可以像在同一台主机上一样进行通信,而不需要了解底层主机的网络配置。当容器发送网络请求时,Overlay网络驱动程序将请求封装为VXLAN包,并通过底层主机的物理网络发送到目标容器所在的主机。在Docker中,Overlay网络是一种容器网络驱动程序,它允许在多个Docker主机上创建一个虚拟网络,使得容器可以通过这个网络相互通信。跨主机通信:容器可以在不同的Docker主机上运行,并通过Overlay网络进行通信。2.启动consul容器。

征服Bug的博客 1555

docker overlay 跨主机容器网络

构建跨主机容器网络 这里使用libnetwork自带的Overlay类型驱动来实现跨主机的网络通信。Overlay驱动默认采用VXLAN协议,在IP地址可以互相访问的多个主机上之间搭建隧道,让容器可以互相访问。 配置网络信息管理数据库 在libnetwork网络方案中,需要配置一个键值数据库,如Consul、Etcd、Zookeeper等来实现跨主机容器网络通信。 这里使用Consul,在这里...

huangliuyu00的博客 1182

主机overlay和网络overlay_Docker跨主机通信网络

跨主机网络方案包括:docker原生的 overlay 和 macvlan。第三方方案:常用的包括flannel、weave 和 calico。(1)准备 Overlay 网络实验环境[root@linux-node1 ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -boots...

weixin_39769039的博客 392

Docker Compose跨主机网络:overlay网络与服务发现

在分布式应用架构中,跨主机容器通信是实现服务弹性扩展和高可用性的关键挑战。传统Docker网络(如bridge网络)仅能实现单主机内容器互联,而当应用需要部署在多台服务器时,我们面临三大核心痛点: 1. **网络隔离**:不同主机上的容器处于独立网络命名空间,缺乏直接通信通道 2. **服务定位**:动态扩缩容导致服务实例IP频繁变化,难以维护固定访问点 3. **负载均衡**:跨主机流量需要智...

gitblog_00322的博客 614
上一篇: Docker多主机管理Docker Machine
下一篇: Docker跨主机网络-macvlan
左明水
博客等级 码龄12年 8粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值