批量部署lxc虚拟机

前言:lxc是一种操作系统层虚拟化(Operating system–level virtualization)技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的命名空间和共用API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。

由于有些朋友对lxc虚拟机了解不多,所以我觉得,这个课题也算很新颖了。

马哥简单讲了lxc虚拟机的部署。我把他写成了脚本,全当练习啦!(别小瞧它,lxc虚拟机也有用武之地的!)

用后体会:用了几天,占用内存很小,安装速度较快,如果你的电脑硬件配置较低,完全可是试试它!

小伙伴们,有几点需要注意,lxc的虚拟机是非常简化版的虚拟机,共用的内核,也不支持fdisk,selinux跟宿主机是一样的也不支持修改等等(其他方面不足待考证)。

所以,我要说明,条件高的同学们不要使用啦。如果你做集群,或者需要使用大量虚拟机,对虚拟机要求的并不高,可以在一台虚拟机里安装多台的lxc虚拟机(vmware虚拟机的内存给大一些)。

实验环境:

1.将马哥发的lxc软件放到/root/lxc

2.配制好本地yum源

3.一个网卡就行

为了方便大家,我写了一些注释,脚本测试过几次,应该没有没问题。当然,由于每个人的环境不同,如果遇到问题大家可以联系我,自己改改也行,我不胜感激。

#!/bin/bash

########Note: please put the Lxc software file in /root/lxc################# 

########Note: Please configure the local yum################################ 

setenforce 0 &>/dev/null

service iptables  stop

read -p "please enter your ip,Netmask and Network card Name(ex:1.1.1.1 255.0.0.0 eth0) :" UserIp Mask Device 

#####请输入你的网卡的ip(随便给一个,不能重复)掩码和网卡名

if ! ping -w 1 -c1 $UserIp &>/dev/null;then

echo 'ok'

else

        echo "$UserIp has already been used."

        exit 1

fi

cd /etc/sysconfig/network-scripts/

cat > ifcfg-eth0 << EOF

DEVICE="$Device"

ONBOOT=yes

BOOTPROTO=none

IPADDR="$UserIp"

NETMASK="$Mask"

EOF

read -p "please enter mirror path,Must be absoulte path(ex:/dev/cdrom):" mirror 你们本地镜像在哪(要写绝对路径)

mount -o loop $mirror /mnt

echo 'mirror mount /mnt!'

cd /etc/sysconfig/network-scripts/

cp ifcfg-eth0 ifcfg-br0

sed -i '$a TYPE=Bridge' ifcfg-br0

sed -i '/DEVICE/c DEVICE=br0' ifcfg-br0

sed -i '/BOOTPROTO/c BOOTPROTO=none' ifcfg-br0

sed -i '/IPADDR/d' ifcfg-eth0

sed -i '/NETMASK/d' ifcfg-eth0

sed -i '/BOOTPROTO/c BOOTPROTO=none' ifcfg-eth0

sed -i '$a BRIDGE=br0' ifcfg-eth0


service NetworkManager stop

service network restart 

yum install vsftpd -y

cp -a /mnt/* /var/ftp/pub

service vsftpd restart && echo 'vsftpd is ok!'

ip=`ifconfig br0 | awk -F ' +|:' '/inet addr/{print $4}'` #####ftp server ip #################

cd /root/lxc

yum install *.rpm -y

yum install libcgroup -y 

service cgconfig restart 

chkconfig cgconfig on

path='/usr/share/lxc/templates/lxc-centos'

sed -i '/lxc.network.link/c lxc.network.link = br0' /etc/lxc/default.conf

sed  -i '/\[updates\]/,/updates$/d' $path

sed -i "/=os$/c baseurl=ftp://$ip/pub" $path

declare -a abc

declare -i A=0

read  -p  "please enter Machine Name,can have more Name(ex:centos1 centos2 ):" -a abc  

#####输入虚拟机的名字空格隔开(输入几个名字就有几个虚拟机出来,这些名字你要记住)

Num=`echo "${abc[*]}" | wc -w `

for i in `seq 0 "$[$Num-1]"`;do

lxc-create -n ${abc["$i"]} -t $path

done

echo '#######run  "chroot /var/lib/lxc/MACHINE NAME/rootfs passwd"###################' 

你必须要设置密码才能登陆,将里面的‘MACHINE NAME’改成你的虚拟机名就可以设定了

echo '#######please modify the password of the virtual machine, and then run lxc-start -n MACHINE NAME####' 

lxc-start -n 虚拟机名字 (这个是登陆用的)

关于lxc虚拟机的几个小命令,帮助你玩转它!

lxc-start -n 虚拟机名 作用:开启虚拟机

lxc-stop -n 虚拟机名  作用:停止虚拟机

lxc-ls   作用:查看虚拟机

lxc-destroy -n 虚拟机名 作用:删除指定的虚拟机


本人新手一枚,也是第一次分享博客,脚本也比较乱,希望大家批评指正,不喜勿喷。真心的希望和大家共同进步,也希望马哥的兄弟们能见证我的成长!


原创文章,作者:Net-Jia,如若转载,请注明出处:http://www.178linux.com/12965

(0)
Net-JiaNet-Jia
上一篇 2016-03-19 22:25
下一篇 2016-03-20 11:48

相关推荐

  • 逻辑卷配置管理

    逻辑卷管理逻辑卷创建1、fdisk t 8e //修改分区类型 2、pvcreate  /dev/sd{a7,b} //创建物理卷pvs pvdisplay   //查看物理卷信息 3、vgcreate  vg0  /dev/sd{a7,b}  //创建卷组v…

    Linux干货 2016-08-30
  • 破坏grub实验之一

    1、删除grub stage1阶段 [root@centos6 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 1+0 records in 1+0 records out 446 bytes …

    Linux干货 2016-09-19
  • 11.网络解析和网络加密

    1、详细描述一次加密通讯的过程,结合图示最佳。 加密过程 1.使用单向加密算法,提取A的文件的特征码。 2.使用A的私钥对提取出来的特征码进行加密,把加密后的特征码附加在A的文件的后面。 3.使用对称加密对刚刚的A的文件和加密后的特征码进行加密,生成对称加密密钥 4.使用B的公钥对第3步骤的对称加密的密钥进行加密,加密后附加在文件的后面。 解密过程 1.使用…

    2017-09-20
  • 数组、变量及bash的配置

    数组、变量及bash的配置 变量:存储单个元素的内存空间 数组:存储多个元素的内存空间,相当于多个变量集合 索引:编号从0开始,属于数值索引,索引为自定义格式即为关联数组(bash4.0之后支持) bash数组支持稀疏格式 数组的声明 普通数组declare –a 关联数组 declare –A 普通数组可以不声明直接使用,关联数组必须先声明再使用 数组的赋…

    Linux干货 2016-08-26
  • 内核编译

    下载内核并解压:tar -xvf linux-4.14.9.tar.xz -C ./linux/     接下来是    make   config  。 (具体参照    《make   config  的几种类型》) 一般采用  #  make   menuconfig   的方式 是这个样子的: 此处有可能需要几个包,选择最简单的y…

    2018-01-01
  • iptables

    练习:基于状态放行telnet, ftp, ssh, http, samba, icmp等服务 (1) 对本机的ping请求每分钟不得超出20个 (2) 每客户端对本机的ssh的并发连接数不得超过3个 (3) 本机的telnet服务仅允许工作时间内访问 [root@node1 ~]# vim iptables.sh iptabl…

    Linux干货 2016-10-22

评论列表(1条)

  • stanley
    stanley 2016-03-20 11:48

    blog的代码段格式化后会更精彩