Docker02:Docker核心技术探索(3)网络命名空间和网络隔离

在Docker中可以为Docker容器创建与原始宿主系统以及其它容器中的虚拟系统之间相互隔离的虚拟网络环境。

Docker的网络分为以下几种模式:

(1)bridge模式。这将配置一个虚拟网络系统,容器中的虚拟网卡通过NAT与宿主系统的真实网卡通讯。

docker run -it  --net=bridge --name=centos --hostname=centos  centos  /bin/bash

在容器中执行以下命令,其中yum provides用于查找指定的命令所在的包。

1  yum provides ifconfig
2
3 yum install net-tools
4
5 yum provides ip
6
7 yum install iproute

检查容器中的网络配置:

 1 [[email protected] /]# ip link list
 2 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
 3     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 4 15: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
 5     link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
 6 [[email protected] /]# ip addr
 7 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
 8     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 9     inet 127.0.0.1/8 scope host lo
10        valid_lft forever preferred_lft forever
11 15: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
12     link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
13     inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
14        valid_lft forever preferred_lft forever
15 [[email protected] /]# ifconfig
16 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
17         inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
18         ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
19         RX packets 8324  bytes 27792451 (26.5 MiB)
20         RX errors 0  dropped 0  overruns 0  frame 0
21         TX packets 6506  bytes 356889 (348.5 KiB)
22         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
23
24 lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
25         inet 127.0.0.1  netmask 255.0.0.0
26         loop  txqueuelen 1  (Local Loopback)
27         RX packets 0  bytes 0 (0.0 B)
28         RX errors 0  dropped 0  overruns 0  frame 0
29         TX packets 0  bytes 0 (0.0 B)
30         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(2)container模式。这将使得容器的虚拟网卡使用与指定的其它容器的虚拟网卡相同的IP地址。

为了理解这种模式,需要先创建一个容器,网络模式为bridge模式。

docker run -it  --net=bridge --name=centos --hostname=centos  centos  /bin/bash

然后查看bridge模式下的网络配置:

 1 [[email protected] /]# ifconfig
 2 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 3         inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
 4         ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
 5         RX packets 1552  bytes 14029219 (13.3 MiB)
 6         RX errors 0  dropped 0  overruns 0  frame 0
 7         TX packets 1519  bytes 85477 (83.4 KiB)
 8         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 9
10 lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
11         inet 127.0.0.1  netmask 255.0.0.0
12         loop  txqueuelen 1  (Local Loopback)
13         RX packets 0  bytes 0 (0.0 B)
14         RX errors 0  dropped 0  overruns 0  frame 0
15         TX packets 0  bytes 0 (0.0 B)
16         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

再创建网络为container模式的容器。

docker run -it --net=container:centos --name=centos2  centos /bin/bash

此时centos2容器和centos容器具备相同的网络配置,包括IP地址,MAC地址以及hostname等信息都相同,这也是container模式下不能指定--hostname=XXXX的参数的原因。

 1 [[email protected] /]# ifconfig
 2 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 3         inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
 4         ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
 5         RX packets 4092  bytes 28111521 (26.8 MiB)
 6         RX errors 0  dropped 0  overruns 0  frame 0
 7         TX packets 3956  bytes 220458 (215.2 KiB)
 8         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 9
10 lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
11         inet 127.0.0.1  netmask 255.0.0.0
12         loop  txqueuelen 1  (Local Loopback)
13         RX packets 0  bytes 0 (0.0 B)
14         RX errors 0  dropped 0  overruns 0  frame 0
15         TX packets 0  bytes 0 (0.0 B)
16         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(3)host模式。这将使得容器的虚拟网卡使用和宿主系统的真实网卡相同的网络环境,即直接使用宿主系统的物理网卡。

docker run -it --rm --net=host --name=centos2 --hostname=centos  centos  /bin/bash

查看容器的网卡情况:

 1 [[email protected] /]# ifconfig
 2 docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
 3         inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
 4         inet6 fe80::42:ffff:fed9:4b28  prefixlen 64  scopeid 0x20<link>
 5         ether 02:42:ff:d9:4b:28  txqueuelen 0  (Ethernet)
 6         RX packets 6506  bytes 265805 (259.5 KiB)
 7         RX errors 0  dropped 0  overruns 0  frame 0
 8         TX packets 8324  bytes 27792451 (26.5 MiB)
 9         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
10
11 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
12         inet 11.1.1.11  netmask 255.255.255.0  broadcast 11.1.1.255
13         inet6 fe80::20c:29ff:fe66:d822  prefixlen 64  scopeid 0x20<link>
14         ether 00:0c:29:66:d8:22  txqueuelen 1000  (Ethernet)
15         RX packets 12671  bytes 1064839 (1.0 MiB)
16         RX errors 0  dropped 0  overruns 0  frame 0
17         TX packets 8803  bytes 3356079 (3.2 MiB)
18         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
19
20 eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
21         inet 11.2.1.11  netmask 255.255.255.0  broadcast 11.2.1.255
22         inet6 fe80::20c:29ff:fe66:d82c  prefixlen 64  scopeid 0x20<link>
23         ether 00:0c:29:66:d8:2c  txqueuelen 1000  (Ethernet)
24         RX packets 29604  bytes 42907671 (40.9 MiB)
25         RX errors 0  dropped 0  overruns 0  frame 0
26         TX packets 9761  bytes 597994 (583.9 KiB)
27         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
28
29 lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
30         inet 127.0.0.1  netmask 255.0.0.0
31         inet6 ::1  prefixlen 128  scopeid 0x10<host>
32         loop  txqueuelen 1  (Local Loopback)
33         RX packets 3765  bytes 2003876 (1.9 MiB)
34         RX errors 0  dropped 0  overruns 0  frame 0
35         TX packets 3765  bytes 2003876 (1.9 MiB)
36         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(4)none模式。这将使得容器中暂时不具备网卡相关功能。

这种模式下,由于没有网卡,无法进行涉及到网络的操作,包括yum install命令。

 docker run -it --net=none --name=centos3 --hostname=centos centos /bin/bash

本博客将对Docker使用的bridge模式的虚拟网络进行模拟。Docker的bridge模式的虚拟网络

原文地址:https://www.cnblogs.com/coe2coe/p/8863216.html

时间: 2024-10-08 15:07:26

Docker02:Docker核心技术探索(3)网络命名空间和网络隔离的相关文章

Docker02:Docker核心技术探索(9)使用cgroup限制资源的使用

可以限定容器中的虚拟系统对于各种资源的使用,包括cpu,内存,磁盘和网络资源,这需要使用cgroup相关技术来实现. 为了使用cgroup相关的功能,我们首先需要将cgroup提供的特殊文件系统cgroup安装到我们的容器中. 在容器的/etc/fstab中加入以下内容,可以通过在宿主系统上通过mount |grep cgroup命令查看需要mount的文件系统. 1 tmpfs /sys/fs/cgroup tmpfs defaults 0 0 2 3 cgroup /sys/fs/cgrou

Docker的bridge和macvlan两种网络模式

项目上部署的Docker集群创建的容器网络遇到问题,借机会学习了一下docker的网络模式,其他类型我们用的不多,这里只列举我们常用的bridge和macvlan两种,下面的描述和截图有一些是直接从网上下载的. Bridge模式  Bridge模式是Docker默认的网络模式,当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,用来连接宿主机和容器,此主机上的Docker容器都会连接到这个虚拟网桥上,虚拟网桥的工作方式和物理交换机类似,这样所有容器就通过交换机连在了一个二层

docker核心技术分享搭建OpenVPN服务只需5分钟搞定!

OpenVPN是款开源的VPN服务软件, 大家可以在自己的服务器上部署.由于采用了非对称加密算法, 保证数据传输的安全, 不被恶意偷窥.但是部署过程中, 涉及很多文件(CRT+KEY). 稍不注意, 就会遗漏.借助于Docker, 就可以在短短5分钟之内, 搭建一个OpenVPN服务. 下载服务包 https://wfuzz.com/open/openvpn.tgz https://wfuzz.com/open/centos.tgz 导入服务包 gunzip  -c centos.tgz  |

docker核心技术导图分享

docker核心技术导图

struct net网络命名空间

struct net 结构体表示的内核中的网络命名空间(net_namespace).在linux内核中,每一个网络设备(struct net_device)都有一个所属的网络命名空间,至于一个网络设备是属于内核中的那一个网络命名空间,在介绍网络设备(struct net_device.在linux内核中,用struct net_device来刻画一个网络设备)时候再说.     在linux内核中,网络命名空间struct net结构体中包含多个字段,在本篇中只介绍其中的一些字段,用于描述内核

2018年7月新品尚家docker核心技术教程--大牛编程吧-程序员编程入门圣地

2018年7月新品尚家docker核心技术教程--大牛编程吧-程序员编程入门圣地2018年7月新品尚家docker核心技术教程--大牛编程吧-程序员编程入门圣地 02_Docker_为什么会出现.avi03_Docker_理念.avi04_Docker_是什么.avi05_Docker_能干什么.avi06_Docker_三要素.avi07_Docker_CentOS6安装Docker.avi08_Docker_CentOS7安装Docker简介(补充知识请看34集).avi09_Docker_

Docker第四回(容器虚拟化网络)

一.docker网络简介 网络作为docker容器化实现的6个名称空间的其中之一,是必不可少的.其在Linux内核2.6时已经被加载进内核支持了.网络名称空间主要用于实现网络设备和协议栈的隔离,列如:一个docker host有4块网卡,在创建容器的时候,将其中一块网卡分配给该名称空间,那么其他名称空间是看不到这块网卡的.且:一个设备只能属于一个名称空间.因为一个名称空间绑定一个物理网卡和外界通信,且一个物理网卡不能分配多个名称空间,这使得我们只能创建4个名称空间.如果要创建的名称空间多于我们的

网络分流器-网络分流器TAP网络流量监控

戎腾网络分流器作为网络安全重要装备,是整个网络安全领域网络监控前端最关键的装备! 今天我们详解网络流量监控! 网络分流器TAPATCA网络分流器支持多用户高密度网络分流器DPI检测五元组过滤网络分流器镜像可视化流量汇聚分流从网络体系架构来说,网络流量是基础.所有对网络的应用和网络本身的行为特点的研究都可以通过对网络流量的研究来获得.网络的行为特征可以通过其承载的流量的动态特性来反映,所以有针对性地监测网络中流量的各种参数(如接收和发送数 据 报大小.丢包率.数据报延迟等信息),能从这些参数中分析

模式识别之卷及网络---卷及网络 训练太慢

摘要:CIFAR-10竞赛之后,卷积网络之父Yann LeCun接受相关采访.他认为:卷积网络需要大数据和高性能计算机的支持:深层卷积网络的训练时间不是问题,运行时间才是关键.Yann LeCun还分享了他正在做的一些最新研究. Kaggle近期举办了一场 关于CIFAR-10数据集的竞赛,该数据集包含有6万个32*32的彩色图像,共分为10种类型,由 Alex Krizhevsky, Vinod Nair和 Geoffrey Hinton收集而来. 很多竞赛选手使用了卷积网络来完成这场竞赛,其