容器、虚拟化技术

什么是容器?

对软件和其依赖环境的标准化打包
应用之间相互隔离
共享一个OS Kernel
可以运行在很多主流操作系统上

什么是虚拟化技术?

虚拟化技术会在本地操作系统之上加多一层 Hypervisor层,Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可以虚拟化硬件资源,例如cpu、硬盘、内存资源等。然后我们可以基于通过虚拟化出来的资源之上安装操作系统,这也就是所谓的虚拟机。
通过Hypervisor层,我们可以创建不同的虚拟机,并且可以限定每个虚拟机的物理资源,并且每个虚拟机都是分离、独立的。例如A虚拟机给它使用2个cpu、8g内存、100g磁盘,B虚拟机给它使用4个cpu、16g内存、300g磁盘。。。等等,这样就可以实现物理资源利用率的最大化。
一台物理机就可以部署多个应用
每个应用都可以独立运行在一个虚拟机里

虚拟化技术的优点:

资源池——一个物理机的资源分配到了不同的虚拟机里
很容易扩展——增加物理机或者虚拟机即可,因为虚拟机是可以复制的
很容易云化——亚马孙AWS,阿里云,谷歌云等
每一个虚拟机都是一个完整的操作系统,所以需要给其分配物理资源,当虚拟机数量增多时,操作系统本身消耗的资源势必增多

容器可以帮我们把开发环境及应用整个打包带走,打包好的容器可以在任何的环境下运行,这样就可以解决开发与运维环境不一致的问题了,

所以:容器解决了开发和运维之间的矛盾
在开发和运维之间搭建了一个桥梁,是实现devops的最佳解决方案

容器和虚拟机的区别:

容器可以和虚拟机结合在一起使用,而且这也是目前主流的做法:

总结:虚拟机是基于物理机的虚拟技术,容器是基于操作系统的虚拟技术

一、kvm简介

基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为KVM),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个虚拟机监视器(Hypervisor)。KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上。
kvm:kernel-based vm。
CPU和内存的虚拟化由kvm负责,IO虚拟化由qemu负责。
主机级虚拟化:
xen
kvm
容器级虚拟化:
lxc
openvz

二、kvm安装

1、确认内核是否支持kvm

modinfo kvm

2、确认CPU是否支持kvm

grep -i -E ‘(vmx|svm|lm)‘ /proc/cpuinfo

         vmx:intel
         svm:amd
         lm:x64

3、安装kvm

yum install libvirt-daemon-kvm qemu-kvm virt-manager libvirt -y

4、启动服务

systemctl start libvirtd

  #systemctl enable libvirtd

5、启动图形接口

virt-manager &

配置桥接
#virsh iface-bridge ens32 br0 || systemctl restart network
需要修改ifcfg-br0配置文件

三、使用cirros镜像测试

1、准备一个cirros

mkdir -p /data/VMs/c1/

#cd /data/VMs/c1/
#wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img
 mv cirros-0.3.0-x86_64-disk.img c1.img
 qemu-img info c1.img

2、启动virt-manager

virt-manager &

新建——导入现有磁盘映像——》
3、使用virsh连接
查看:
virsh # list
virsh # console c1
使用"Ctrl+]"剥离会话

四、vrish命令

1、域管理命令
virsh # domstate c1
virsh # domstats c1
virsh # dominfo c1
virsh # domiflist c1
virsh # domblklist c1
#virsh dumpxml c1
#virsh create --console /etc/libvirt/qemu/c2.xml
#virsh shutdown c2
virsh destroy c2 强制关闭虚拟机
#virsh define /etc/libvirt/qemu/c2.xml 定义域
virsh save c1 /tmp/c1.snap 将状态保存到文件
#virsh restore /tmp/c1.snap 从文件载回
start
reboot
undefine 删除虚拟机
suspend/resume 暂停和继续
#virsh setmem centos7.0 1024 修改内存大小
增加/拆除磁盘
#cd /data/VMs/c1/
c1]# qemu-img create -f qcow2 -o size=20G,preallocation=metadata ./second.img
c1]# qemu-img info second.img
#virsh attach-disk c1 /data/VMs/c1/second.img vdb 为c1附加磁盘
virsh detach-disk c1 vdb 拆除
增加/拆除网卡
#virsh attach-interface c1 bridge virbr0
#virsh detach-interface c1 bridge --mac 52:54:00:db:7b:65
2、域监控命令
3、查看宿主机和虚拟机相关信息
4、管理网络接口
5、管理网络防火墙规则
6、管理虚拟网络
7、管理节点设备
8、远程连接认证
9、管理快照
10、管理存储池
图形管理工具:
kimchi
OpenStack
oVirt
proxmox
管理工具栈:http://www.linux-kvm.org/page/Management_Tools

五、brctl工具

安装:
#yum install bridge-utils
查看
#brctl show
添加桥
brctl addbr mybr0
ip link set mybr0 up
#ip addr add 10.0.0.1/8 dev mybr0

六、qemu-kvm工具

安装
yum install qemu-kvm
ln -sv /usr/libexec/qemu-kvm /usr/bin/
查看可以模拟的架构和CPU
#qemu-kvm -machine ?
qemu-kvm -cpu ?
指定CPU核心树
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
指定引导选项
-boot [order=drives][,once=drives][,menu=on|off]
[,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]
块设备
-hda/-hdb file:
-hdc/-hdd file:
-cdrom file.iso:
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
显示
-display type: sdl,curses,none,vnc
-nographic:不使用图形接口
-vga [std|cirrus|vmware|qxl|xenfb|none]
-vnc
-monitor stdio
ctrl-a,c
ctrl-a,h
网络选项
-net nic
-net tap
/etc/qemu-ifup
#!/bin/bash

bridge=br0
if [ -n "$1" ];then
ip link set $1 up
sleep 1
brctl addif $bridge $1
[ $? -eq 0] && exit 0 || exit 1
else
echo "Error: on interface specified"
exit 2
fi
示例:
[[email protected] ~]# vim /etc/qemu-ifup
#!/bin/bash

bridge=br0
if [ -n "$1" ];then
ip link set $1 up
sleep 1
brctl addif $bridge $1
[ $? -eq 0] && exit 0 || exit 1
else
echo "Error: on interface specified"
exit 2
fi
chmod -x /etc/qemu-ifup
[[email protected] ~]# mkdir /data/VMs/c1 -p
[[email protected] ~]# cd /data/VMs/c1/
下载cirros
[[email protected] c1]# mv cirros-no_cloud-0.3.0-x86_64-disk.img c1.img
[[email protected] ~]# qemu-kvm -name c1 -m 128 -cpu host -smp 2 -drive file=/data/VMs/c1/c1.img,if=virtio,media=disk,cache=writeback,format=qcow2 -net nic,macaddr=52:54:00:00:00:00,model=virtio -net tap,script=/etc/qemu-ifup -vnc :0

批量获取kvm虚拟机IP的脚本:

#!/bin/bash
#ping当前网段内在线的主机,以便产生arp记录.
for ip in 172.20.128.{1..253};do
{ ping -c1 $ip >/dev/null 2>&1
}&
done
#依次查找arp记录.
running_vms=virsh list |grep running
echo -ne "共有echo "$running_vms"|wc -l个虚拟机在运行.\n"
for i in echo "$running_vms" | awk ‘{ print $2 }‘;do
mac=virsh dumpxml $i |grep "mac address"|sed "s/.*‘\(.*\)‘.*/\1/g"
ip=arp -ne |grep "$mac" |awk ‘{printf $1}‘
printf "%-30s %-30s\n" $i $ip
done

批量创建kvm

#for i in {1..30}; do virt-clone --connect=qemu:///system -o temp -n node$i -f /data/node$i.img ;done

原文地址:http://blog.51cto.com/13958408/2310424

时间: 2024-10-14 21:10:54

容器、虚拟化技术的相关文章

Docker容器虚拟化技术

Docker是近十年软件工程领域最大的革命.Docker的技术可以完全存驻整个软件的开发.测试.部署和运维等软件生产的方方面面的环节. 提到Docker,也不得不提虚拟化,因为大家谈云计算的时候,也不得不提虚拟化技术.Docker所代表的虚拟化技术和我们以前谈的云计算的虚拟化技术怎么区别呢?以前我们谈云计算的虚拟化技术都是一些譬如Vmware或者是openstack,这些为代表的虚拟化技术都是比较重量级的虚拟化.以vmware举例,vmware大家都知道,他虚拟化的时候是将传统的一台计算机抽象成

Docker 容器相关技术

Docker 依赖的Linux内核特性 Namespaces 命名空间 Control groups (cgroups) 控制组 理解这两个特性,能够更好的帮助我们理解docker的资源分配和管理 Namespaces 命名空间 很多编程语言都包含有命名空间的概念,可以认为命名空间是一种封装的概念,编程中的封装目的是实现代码的隔离. 编程语言: 封装 ----->  代码隔离 操作系统: 系统资源的隔离 系统资源包括 进行.网络.文件系统... 实际上Linux系统内核实现命名空间的目的之一就是

Docker学习笔记(三)Docker容器相关技术

轻量级虚拟化技术 命名空间:namespace,隔离系统资源,进程.网络.文件系统等隔离 控制组:cgroups,为容器技术而生,分配资源,用来限制.记录.隔离进程资源使用. 命名空间隔离: 进程pid:进程隔离 网络:管理网络接口 ipc:管理跨进程的访问 文件系统mount:管理挂载点 uts:隔离内核和版本标识. control groups:将cpu和内存资源独立分配给每个资源. 资源限制 优先级设定 资源计量 资源控制

初识虚拟化技术

(一)虚拟化技术概述 虚拟化技术可针对详细应用目的创建特定目的的虚拟环境,安全.效率高,快照.克隆.备份.迁移等方便.系统虚拟化是将一台物理计算机虚拟成一台或多台虚拟计算机系统,每一个都有自己的虚拟硬件,其上的操作系统任觉得自己执行在一台独立的主机上,计算机软件在一个虚拟的平台上而不是真实的硬件平台上执行.虚拟化技术能够扩大硬件的容量.简化软件的又一次配置过程.当中CPU的虚拟化能够单CPU模拟多CPU并行执行,同意一个平台同一时候执行多个操作系统,而且应用程序能够在相互独立的空间内执行而互不影

容器虚拟化lxc

一.简介 LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性.相当于C++中的NameSpace.容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求.与传统虚拟化技术相比,它的优势在于 (1)与宿主机使用同一个内核,性能损耗小: (2)不需要指令级模拟: (3)不需要即时(Just-in-time)编译

深度解析容器化技术在广发证券交易系统的应用【转】

原文链接:http://geek.csdn.net/news/detail/94850 本文是docker落地比较好的实践案例,文中很多地方多可以学习一下,以下是摘录: 为什么要容器化 对传统的垂直行业来讲,Docker也是最近几年才出来的技术,技术理念非常先进,因此采用Docker容器化技术对我们而言需要综合的评估,但是我们为什么要去做呢?首先,从行业现状来说,证券行业一方面量化交易.高频交易.实时风控要求高,其次,行业创新非常多,创新业务也很频繁,另外,监管方面,证监会证监局对我们要求交易事

内核级虚拟化技术

这篇可能讲的有一点点的无聊,因为基本上是概念性的东西,我也是理解了很久才慢慢的搞懂的. 一.虚拟化与虚拟化技术 1.1.虚拟化的定义 虚拟化主要指的是特殊的技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的.统一的.模拟的计算环境(称为虚拟机)(IBM定义).虚拟化为有效利用大型机的资源提供了技术支持. 虚拟机技术也是多种多样,而可以虚拟的层次或者可虚拟的方面也是遍布从硬件到应用层整个计算机系统. 1.2.虚拟化技术 其实现在的虚拟化技术非常多的,比如说我现在在用的:VMWare.Vir

Docker引领Container虚拟化技术浪潮

今年的技术领域关注在人们热烈讨论的云基础建设,其中刚开始起步的Docker,作为一个超轻量化容器应用,仅次于OpenStack成为最受欢迎的云开源项目,VMware.谷歌.微软等纷纷和Docker展开合作. 云计算的明日之星Docker Docker的本质是Container,被形象地看作一个应用封装容器,以往开发者开发一款应用,需要考虑硬件.操作系统.运行环境的适配,有了容器就不用考虑这些了.现在开发者只需专注于开发软件,不需要考虑在哪运行自己的软件,这也是云计算的发展方向. Docker因其

虚拟化技术在智能终端的应用

服务器和桌面机虚拟化一直占据有相当大的版面,随着云计算和存储的兴起,虚拟化技术更被热捧,还有一种虚拟化技术发展迅猛--嵌入式虚拟化.嵌入式虚拟化是指嵌入式系统中部署虚拟机监控程序.尽管嵌入式设备一直受到严格的资源限制,但今天的设备范围广泛--从拥有服务器级功能(比如对虚拟化的硬件支持)的强大处理器到拥有计较少容量和资源的功耗优化系统.如果向嵌入式系统添加一个虚拟机监控程序,将添加灵活性和一些高级功能,将嵌入式设备转变为一种新型系统. 嵌入式领域包含几个有用的虚拟化应用领域:移动设备.安全性内核和