文档章节

整理的内核虚拟化LXC在阿里云服务器上的配置

Brin想写程序
 Brin想写程序
发布于 2015/06/08 17:31
字数 1321
阅读 101
收藏 0

因为阿里云服务器本身应该是虚拟机,在上面再创建虚拟机是不行的。但是我想把一台阿里云服务器安装几个隔离的服务。

安装一个docker太重了。。

所以直接安装lxc吧。

  1. 选择一个centos7的阿里云服务器,centos7才支持lxc

  2. 先yum一个lxc

    yum install lxc

  3. 然后配置一个网桥,阿里云是eth0是内网,eth1是外网,在外网网卡上配网桥有点危险,所以可以把网桥配在内网,也就是eth0上面

    网桥配置如下:

 cat /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE="br0"

TYPE=Bridge

ONBOOT=yes

BOOTPROTO=static

IPADDR=阿里云内网ip

NETMASK=阿里云内网掩码

然后我们可以修改eth0的配置,让网桥绑在eth0上。

cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BRIDGE=br0

4.有了网桥,lxc就可以连接网络了,然后专心搞lxc配置

 给lxc一个运行的硬盘。

思路是将整个/复制到一个子目录下,作为lxc的根。

但是这里有两个问题,其一,/dev/ /sys /proc是没法复制的。

其二,有可能我们需要在usr目录下安装自己的应用。

所以直接copy是不行的,而用mount所有的目录的方法也是不行的。

所以首先,创建/dev /sys /proc目录,把原来的根下面的/dev /sys /proc 给mount过来,然后将usr等目录给拷贝到子目录下面


  cp  -rf  /boot /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /bin  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /etx  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /etc  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /lib  /export/lxc/nagios_lxc/rootfs/

   cp  -rf  /lib64  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /usr  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /sbin  /export/lxc/nagios_lxc/rootfs/

这里有个坑的地方是usr目录太大了,要1个G,其实这地方docker采用的autfs,或者任何一个支持快照和日志的文件系统都可以用快照的方式,在/usr目录上做增量。能够极大地减少硬盘占用。不过我懒得弄,而且阿里云服务器的内存是要钱的,因此直接就copy了。

这里可以创建lxc。。

 lxc-create -n 虚拟机名 -f /export/lxc/nagios_lxc/rootfs/etc/lxc/default.conf

然后在/var/lib/lxc目录下,出现了虚拟机名的config文件,下面开始修改这个lxc提供的配置文件

lxc提供的配置文件,有两个重要的接口——rootfs和fstab的配置

lxc默认配置文件在/etc/lxc下,而创建后的配置文件在/var/lib/lxc下面

 cat /var/lib/lxc/basic/config

lxc.mount = /export/lxc/basic_lxc/rootfs/etc/fstab

lxc.utsname = basic

lxc.network.type = veth

lxc.network.flags = up

lxc.network.link = br0

lxc.rootfs = /export/lxc/basic_lxc/rootfs

lxc.network.name=eth0

lxc.network.ipv4=192.168.199.3/24

lxc.network.ipv4.gateway=192.168.199.1

这里解释一下:

lxc.mount 是挂载目录的配置,相当于虚拟机的fstab文件,这个其实可以放在任何地方,属于在虚拟机之外的配置,这里可以实现将/dev /proc /sys挂到lxc的子目录下

 cat /export/lxc/basic_lxc/rootfs/etc/fstab


#

# /etc/fstab

# Created by anaconda on Fri Nov 21 18:16:53 2014

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev    /export/lxc/basic_lxc/rootfs/dev        none    rw,bind 0 0

/dev/pts        /export/lxc/basic_lxc/rootfs/dev/pts    none    rw,bind 0 0

/proc   /export/lxc/basic_lxc/rootfs/proc       proc    defaults 0 0

/sys    /export/lxc/basic_lxc/rootfs/sys        sysfs   defaults 0 0

注意/dev/pts要挂一个带读写的

lxc.rootfs = /export/lxc/basic_lxc/rootfs 这里指向的是lxc虚拟机的根目录位置。进入/export/lxc/basic_lxc/目录后,就是虚拟机的可以看到的内容了,虚拟机的里面应用的变化和写入都在rootfs里面,这个目录可以指向自己喜欢的目录。这个根目录要模拟一个真实的根的样子,所以才有各种copy和fstab的挂载

然后就是网络了

lxc.network.link = br0

表明这个lxc挂在br0上面,之前的网桥配置有用了。

lxc与普通虚拟机不一样,不需要再虚拟机里面指定ip和网络配置,lxc的网络配置,都是在外面配的

lxc.network.ipv4=192.168.199.3/24

这个是虚拟机的网络ip,我配成了192.168.199.3 ,子网掩码是255.255.255.0

给虚拟机一个网关,这样,虚拟机可以通过本机连接到网络:

lxc.network.ipv4.gateway=192.168.199.1

现在出现了一个新的ip,192.168.199.1

我这里不能用阿里给的内网ip,而我的网桥在内网上,如果配成内网ip,很可能有ip冲突,所以我这边给阿里云主机的内网配置一个别名,相当于两个ip。

因为用了网桥,所以第一个ip也配置在网桥上面,在/etc/sysconfig/network-scripts/下创建ifcfg-br0:0文件

cat /etc/sysconfig/network-scripts/ifcfg-br0:0

DEVICE="br0:0"

TYPE=Bridge

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.199.1

NETMASK=255.255.255.0

重启网络服务就可以了。

配置到这一步,可以启动lxc了。

lxc-execute -n 虚拟机名 /usr/sbin/sshd -D

然后可以ssh 192.168.199.3 访问我们的虚拟机 

现在还有最后一步,就是为虚拟机配置一个snat

iptables -t nat -A POSTROUTING -s 192.168.199.0/24 -o eth1 -j SNAT --to 阿里云外网IP

然后我们虚拟机也要对外提供服务,配置一个dnat

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 10086 -j DNAT --to 192.168.199.3:80

完工! 









 









© 著作权归作者所有

Brin想写程序

Brin想写程序

粉丝 128
博文 49
码字总数 70120
作品 3
西城
程序员
私信 提问
docker的历史与现状,原理与概念

1.docker的历史与现状分析 老一代PASS平台的局限性和困境: 主要提供应用部署和托管,针对应用开发者,仅支持特定的LAAS基础技术,支持单种开发语言和框架,支持特定服务,如自定义的数据存储...

xiejunbo
2016/12/17
387
0
Linux容器虚拟技术及GIS应用前景

1 引言 云计算的核心价值是是通过集约化计算和服务,节约资源,怎么利用技术手段使硬件资源的性能得到最大发挥,并使应用的部署更简单、快捷,是技术人员一直努力的目标,在云GIS中更是如此。...

地信行业我知道
2015/11/27
318
0
[Docker]Docker简介

1. 什么是Docker Docker是开源项目。Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司。Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐渐形成...

sjf0115
2016/06/20
0
0
LXC 容器集chroot使用说明

1.1 LXC是什么? 1.1.1 关于LXC LXC,其名称来自Linux软件容器(Linux Containers)的缩写,一种操作系统层虚拟化(Operating system–level virtualization)技术,为Linux内核容器功能的一...

惨绿少年
2018/02/09
0
0
运维之我的docker(文章教程汇总)

大家docker如果已经可以正常运行以后就可以尝试这进行下面的操作了: 阿里云加速你的docker 运行你第一个镜像实例-docker容器 docker命令参数 docker仓库使用和镜像提交 docker镜像构建构建及...

qq850900633
2017/01/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue入门--简单路由配置

本文转载于:专业的前端网站➜vue入门--简单路由配置   在初始化vue init webpack <工程名>时,有一步是询问是否安装vue-router,选择yes,如果没有安装的话,后面需要自己安装。然后在目录...

前端老手
28分钟前
3
0
怎么给视频配音

很多刚开始尝试视频制作的小伙伴,帮助到怎么给制作完成的视频配音,其实给视频配音的方法非常简单,在手机上可以进行制作,下面一起来看看给视频配音的方法吧! 具体步骤如下: 1、首先在手...

白米稀饭2019
37分钟前
3
0
windows批处理bat脚本编写

什么是bat脚本 .bat结尾的文件其实就是windows上的批处理脚本,Windows中的bat文件相当于 Linux中shell编程的.sh脚本,批量执行DOS命令。 其最简单的例子,是逐行书写在命令行中会用到的各种...

孙幼凌
45分钟前
3
0
华为手机翻译功能怎么使用?这三种方法请务必收藏

华为手机翻译功能怎么使用?在我们的生活中会经常遇到翻译问题,许多外语不好的朋友该怎么办呢?华为手机已经为我们解决了这个问题,今天小编就教大家学会使用华为手机中的三种翻译技巧,需要...

翻译小天才
53分钟前
5
0
企业服务软件开发中需要注意的三个问题

在开发企业服务软件时,我们需要分为:业务需求、用户需求、产品需求,三大需求层次,三个层次互相关联,企业服务软件开发首先要服务业务,需要满足业务的需求,再关注用户体验,也就是用户需...

积木创意科技
56分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部