virtualmachine_container

虚拟机(Virtual Machine) 通过VMM(Virtual Machine Monitor)或Hypervisor虚拟化软件模拟出多份存储,内存,网络、CPU等物理资源。每一份资源称为一台虚拟机(VM),原物理机称为宿主机,可以在每台VM上面安装不同于宿主机或彼此的操作系统(宿主机有可能没有OS,被VMM或Hypervisor取代)。 虚拟机(VM)的用途: 隔离应用: 若将所有应用安装在同一台物理机上面,不同应用进程之间将共享物理资源,但同时也会出现相互干扰(比如资源之间的竞争,或进程访问了部署于自己的数据等安全问题),也不便于管理。虚拟机出现后,可以每台虚拟机上面安装一个应用,这样就完全将应该隔离开来。 发挥单台物理机的最大性能:有人说那为什么不每台物理机上面安装一个应用呢? 这也是可行的。但现代物理机的性能越来越高,一台物理机安装一个应用有可能使用不完物理资源,造成资源的浪费。此时一台物理机上面安装多台虚拟机,每台虚拟机运行一个应用。就相当于一台物理机上面运行了多个应用,应用之间的进程还是隔离的。 多操作系统环境: 每台虚拟机可以安装不同的操作系统(Unix, Windows, Linux),这样就可以实现一台物理机上面,通过虚拟软件而运行不同的操作系统,每个应用可以根据需求选择相应的操作系统 便于应用在不同的物理机上面迁移,保证应用的高可用:传统的模式,若物理机出现问题,不同物理机上面迁移应用由于受到物理机硬件类型的不同而难以实现。而虚拟机解决了这一问题,只要在物理机上面安装相同的VMM或Hypervsor,对于VM来说,就相当于拥有了相同的底层环境,可以方便的在这些Hyperversor上面迁移。从而实现不同物理机上面快速迁移应用的目的。 虚拟机与物理机的对比图: 容器(Container) 在实现进程隔离方面,容器(Container)采用了与虚拟机完全不同的思路,容器并不虚拟出硬件,所以也没有使用另外的操作系统(OS),而是使用物理机原有的操作系统,通过Linux内核所支持的Namespace和Cgroup技术来实现进程的隔离和资源的限制。 此操作的好处是容器(Container)相较于虚拟机相当轻量,容器甚至可以安装到虚拟机里面,所以容器并不是取代虚拟机,而是另辟蹊径。现在围绕容器的生态现在已经建立起来,并还在不断壮大。 容器与虚拟机的对比图 IaaS, PaaS, SaaS 云厂商通常为我们提供以下三种模式的服务: IaaS(Infrastructure as a Service):比如AWS的EC2, Google云的VM, 阿里云的ECS等各种云服务器 PaaS(Platform as a Service): AWS Elastic Beanstalk, Windows Azure, Heroku, Force.com, Google App Engine等各种软件发布平台。 SaaS(Softer as a Service):Facebook , 微信,Google Apps等各种应用软件。

veth

概述 veth是Linux的虚拟网卡,和其他虚拟网卡一样,它有两端。不同之处在于veth设备通常成对出现,成对的两个veth设备一端互相连接(类似于一条网线连接两块网卡),另外一端各自连接协议栈。 数据从协议栈流入veth设备后,将从另外一个与之相连的veth设备流出。 案例 veth设备通常用作容器中,实现容器连通外部网络,容器其实就是通过Namespace和CGroup技术实现进程隔离和限制的进程。 下面演示与主机不在同一个net namespace 的进程如何访问外部网络 若在虚拟机中操作,需要设置虚拟机管理软件网卡开启混杂模式,让目的非本机的mac地址通过虚拟机网卡。 方法1:通过bridge实现 网络示意图如下所示 netnamespace-01 以下操作均在net-namespace01中 创建网桥br0,并配置网络 ip link add br0 type bridge 启动网桥 ip link set br0 up 将物理网卡enp0s3加入网桥br0中,此时网络会中断,因为enp0s3 上原有的地址会消失,此时enp0s3的功能相当于一根网线,起到将br0与外界连接的作用。 ip link set enp0s3 master br0 br0相当于交换机和网卡的功能,可以在上面配置ip ip addr add 192.168.0.183/24 dev br0 配置网关地址,DNS,此处均为临时配置。 $ ip route add default via 192.168.0.1 $ echo 'nameserver 192.168.0.1' >> /etc/resolv.conf 此时可以正常访问外部网络 创建veth设备 ip link add veth1 type veth peer veth0 激活veth0,并加入网桥br0