首页天道酬勤docker网络原理,docker教程

docker网络原理,docker教程

张世龙 05-12 17:53 95次浏览

Docker在启动时创建虚拟桥docker0。 默认地址为172.17.42.1/16,表示容器启动后

网桥连接到docker0,并自动分配给IP地址。

更改docker的默认网络配置:

#系统停止推动器

# IP link set dev docker 0下装

# IP addr del 172.17.42.1/24 dev docker 0

# ipadd radd 192.168.0.1/24 devdcoker 0

# ip link set dev docker0 up

# CP/lib/systemd/system/docker.service/etc/systemd/system/docker.service

# vim/etc /系统/系统/docker.service

服务

Type=notify

execstart=/usr/myd ZT/docker daemon-HFD ://-- bip=' 192.168.0.1/24 '

.

#系统后台重新加载

#系统启动推动器

容器的四种网络模式:

桥接模式、主机模式、容器模式、无模式

启动容器时可以通过--net参数指定,缺省为桥接模式。

以下是docker网络初始化的过程:

另一方面,网桥模式的实现步骤主要为以下:

(1)代理后台程序利用veth pair技术在主计算机上创建两个虚拟网络接口设备,并假定如下

veth0和veth1。 veth pair技术的特性是无论哪个veth接收到网络消息

信息会发送给对方。

)2) Docker Daemon在Docker Daemon创建的docker0桥上添加veth0。 保证宿主机的网络消息可以发送到veth0;

)3) Docker Daemon在Docker Container所属的namespace下添加veth1,并改名为eth0。

以此方式,一旦宿主机的网络消息发送到veth0,它就立即被eth0接收并从宿主机发送回

坞站容器网络连接性; Docker Container还保证单独使用eth0来实现容器网络

联系环境的隔离性。

bridge网桥模式的Docker Container并没有为开发人员涵盖一切。 最明显的是,

在此模式下,Docker Container没有公共IP。 也就是说,它与宿主机的eth0不在同一网段上。 作为结果

结果,除宿主机以外的世界无法直接与容器通信。 虽然NAT模式通过中间处理实现

在这方面,NAT模式仍然存在问题和不便。 例如,所有:容器都必须在主机上与端口、容器竞争

内部服务的访问者需要使用服务发现来了解服务的外部端口等。 另外,NAT模式处于三层

因为是网络上的实现手段,所以一定会影响网络的传输效率。

docker run -it --name vm3 ubuntu

添加桥后,桥上有桥

二、主机网络模式:

主机模式是对网桥模式的补充。 使用主机模式的Docker Container可以直接使用

宿主机的IP地址与外部进行通信,并且如果宿主机的eth0是公用IP,则容器也具有该公用

有IP。 容器中的服务端口也可以使用宿主机端口,不需要添加NAT转换。 当然,

如果有这样的便利,就会失去其他特性的一部分。 最明显的是Docker Container网络环境的隔离性

弱化是容器不再具有隔离的独立网络堆栈。 此外,使用主机模式的Docker Container

但是,容器内部的服务与以往的状况没有差别,可以无改造地使用,但是网络的隔离性弱

化,该容器与宿主机共享竞争网络堆栈的使用; 此外,容器内部将不再有所有端口资金

源是因为某些端口资源已被宿主机自身的服务占用,而某些端口已用于bridge网络

联系人容器的端口映射。

docker run-it---- name VM3----nethostubuntu

与物理机相同

三.容器网络模式:

)1)查找other container (即需要共享网络环境的容器)的网络namespace;

)2)使用新创建的Docker Container (也是需要共享其他网络的容器) (namespace )

other container的namespace。

德奥

cker Container 的 other container 网络模式,可以用来更好的服务于容器间的通信。
在这种模式下的 Docker Container 可以通过 localhost 来访问 namespace 下的其他容器,传输
效率较高。虽然多个容器共享网络环境,但是多个容器形成的整体依然与宿主机以及其他
容器形成网络隔离。另外,这种模式还节约了一定数量的网络资源。但是需要注意的是,
它并没有改善容器与宿主机以外世界通信的情况。

docker run -it --name vm4 --net container:vm1 ubuntu

 

和vm1相同

四、None 网络模式:

网络环境为 none,即不为 Docker Container 任何的网络环境。一旦 Docker Container 采用了
none 网络模式,那么容器内部就只能使用 loopback 网络设备,不会再有其他的网络资源。
可以说 none 模式为 Docker Container 做了极少的网络设定,但是俗话说得好“
少即是多”
,在
没有网络配置的情况下,作为 Docker 开发者,才能在这基础做其他无限多可能的网络定制
开发。这也恰巧体现了 Docker 设计理念的开放。
在 none 网络模式下分配固定 ip:
netns 是在 linux 中提供网络虚拟化的一个项目,使用 netns 网络空间虚拟化可以在本地虚拟
化出多个网络环境,目前 netns 在 lxc 容器中被用来为容器提供网络。
使用 netns 创建的网络空间独立于当前系统的网络空间,其中的网络设备以及 iptables 规则
等都是独立的,就好像进入了另外一个网络一样。

docker run -it --name vm5 --net none ubuntu

 

这种方式创建没有网络,可以自己指定设置网络。

docker inspect vm5 |grep Pid # 过滤vm5的进程idcd /proc/14854cd nsln -s /proc/14854/ns/net /var/run/netns/14854ip link set veth1 netns 14854ip netns exec 14854 ip link set veth1 name eth0ip netns exec 14854 ip link set up dev eth0ip netns exec 14854 ip addr add 172.17.0.100/24 dev eth0ip netns exec 14854 ip route add default via 172.17.0.1

 




检查网络:

hcsr501红外传感器原电路图,pir人体红外感应 docker 网络配置,docker教程