要自定义网络,可以使用“docker network create”命令,默认创建的是 bridge 网络,该网络只能部署在一台主机上。我们也可以创建跨越多台主机的 overlay 网络,不过需要一些先决条件:
1、能访问键值存储区。Docker 支持 Consul、Etcd 和 ZooKeeper(分布式的)键值存储区。
2、能连接到键值存储区的主机群。
3、在群集中的每个主机上配置正确的引擎守护进程。
而支持 overlay 网络的 Docker 选项有:
1、--cluster-store
2、--cluster-store-opt
3、--cluster-advertise
Docker 默认会自动为创建的网路创建一个非重叠的子网,不过强烈推荐使用“--subnet”选项来明确指定一个子网。bridge 网络只能指定一个子网,而 overlay 网络可以指定多个。
除“--subnet”之外,还可以指定“--gateway”、“--ip-range”和“--aux-address”等多个选项。示例:
$ docker network create -d overlay \
--subnet=192.168.0.0/16 \
--subnet=192.170.0.0/16 \
--gateway=192.168.0.100 \
--gateway=192.170.0.100 \
--ip-range=192.168.1.0/24 \
--aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6"\
--aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
my-multihost-network
创建自定义网络时,还可以传递额外的选项给底层驱动。bridge 驱动接受下表所示的选项。
选项 | 简写 | 说明 |
com.docker.network.bridge.name | - | bridge 名字 |
com.docker.network.bridge.enable_ip_masquerade | --ip-masq | 允许 IP 伪装 |
com.docker.network.bridge.enable_icc | --icc | 允许/禁止内部容器连接 |
com.docker.network.bridge.host_binding_ipv4 | --ip | 绑定容器端口时的默认 IP |
com.docker.network.driver.mtu | --mtu | 设置容器网络的 MTU |
overlay 驱动也支持 --mtu 选项。
下面这些参数可以传递给“docker network create”用于任意网络驱动。
选项 | 简写 | 说明 |
--internal | - | 限制外界访问 |
--ipv6 | --ipv6 | 允许 IPv6 网络 |
下例使用“-o”选项来指定了绑定端口时的 IP 地址:
$ docker network create -o "com.docker.network.bridge.host_binding_ipv4"="172.23.0.1" myNetwork
同一个自定义网络中的容器名可被自动解析成 IP 地址,但默认的 bridge 网络中却只能利用 IP 地址来进行互相通信,除非使用了“--link”选项。使用该选项添加了如下功能:
1、解析容器名为 IP。
2、使用“--link=containerName:alias”的形式可为要链接的容器定义别名。
3、安全的容器连接(通过“--icc=false”隔离)。
4、环境变量注入。
下面这个示例首先创建了一个连接到默认网络的容器 container1,然后再创建一个连接到相同网络的容器 container2,但使用“--link container1:c1”选项将其链接到了 container1,并为 container1 指定了别名 c1。然后再绑定到 container2 中使用 container1 的容器名与 container1 进行通信。
$ docker run -itd --name=container1 busybox
$ docker run -itd --name=container2 --link container1:c1 busybox
$ docker attach container2
# ping -w 3 c1
PING c1 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.090 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.151 ms
64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.151 ms
--- c1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.090/0.130/0.151 ms
/ # ^p ^q # 退出 container2 终端
$
同理,如果要在 container1 中使用 container2 的容器名来与 container2 通信,同样需要使用“--link”来进行关联。
分享到:
相关推荐
### ArcGIS创建网络数据集教程知识点详解 #### 一、ArcGIS网络数据集概述 - **网络数据集**: 是一种特殊的数据类型,用于存储和管理网络分析中的数据,如道路网络、供水管道等。 - **用途**: 可以进行路径分析、...
### 创建网络数据集:从SHP格式到地理数据库的实践指南 #### 一、引言 在GIS领域,网络数据集(Network Dataset)是用于存储和分析道路、管道、电力线等网络状地理信息的重要工具。它能够帮助我们进行路径规划、资源...
Visual C++源代码 105 如何创建网络聊天服务器程序Visual C++源代码 105 如何创建网络聊天服务器程序Visual C++源代码 105 如何创建网络聊天服务器程序Visual C++源代码 105 如何创建网络聊天服务器程序Visual C++源...
Visual C++源代码 106 如何创建网络聊天客户端程序Visual C++源代码 106 如何创建网络聊天客户端程序Visual C++源代码 106 如何创建网络聊天客户端程序Visual C++源代码 106 如何创建网络聊天客户端程序Visual C++源...
Visual C++源代码 104 如何创建网络通信客户端程序Visual C++源代码 104 如何创建网络通信客户端程序Visual C++源代码 104 如何创建网络通信客户端程序Visual C++源代码 104 如何创建网络通信客户端程序Visual C++源...
Visual C++源代码 103 如何创建网络通信服务器程序Visual C++源代码 103 如何创建网络通信服务器程序Visual C++源代码 103 如何创建网络通信服务器程序Visual C++源代码 103 如何创建网络通信服务器程序Visual C++源...
**创建网络数据集Network Analyst**是ArcGIS软件中用于地理空间分析的重要组成部分,特别是涉及到路线规划、服务区域划分以及物流配送等与网络相关的任务。在本文中,我们将深入探讨如何利用ArcGIS Network Analyst...
在Mac操作系统中,创建网络连接是一项基础且重要的操作,尤其对于新用户来说,理解并掌握这一过程至关重要。本文将详细讲解如何在Mac系统中建立网络连接,以PPP over Ethernet(PPPoE)接入方式为例。 首先,打开...
如何创建网络聊天客户端程序如何创建网络聊天客户端程序如何创建网络聊天客户端程序如何创建网络聊天客户端程序
使用VRML与Java创建网络虚拟环境 打包下载
浅议重视网络文化软实力创建网络和谐.pdf
c#创建网络连接及接收与发送,比vc,b更简单的连接方法。
网络游戏-在浏览器内创建网络代理.zip
BP神经网络的newff和newcf创建网络.m
创建网络监管服务平台.doc
“创建网络文明”班团日活动策划书.doc
自定义要素创建网络数据集的最小生成方式,教程不一定准确,仅供学习参考自定义要素创建网络数据集的最小生成方式,教程不一定准确,仅供学习参考
A Web Service AutoCreator 自动化创建网络层
小度wifi创建网络失败解决方法.docx