Linux Container

LXC是Linux Containers的缩写,是linux内核自带的容器化工具,用于进程隔离,namespace隔离,文件系统隔离。提供一种轻量的虚拟化解决方案。
本文的操作基于的Ubuntu系统。

安装LXC

Ubuntu下直接安装

$ sudo apt-get install lxc lxc-templates wget bridge-utils

安装完成后查看配置情况

# lxc-checkconfig

Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-4.10.0-33-generic
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Warning: newuidmap is not setuid-root
Warning: newgidmap is not setuid-root
Network namespace: enabled

--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

...

启动LXC container

$ lxc-start -n centos_lxc

配置LXC网络

配置桥接网络
TODO

利用默认模板创建新的container

查看一下当前可用的模板

$ ls /usr/share/lxc/templates/
lxc-alpine    lxc-archlinux  lxc-centos  lxc-debian    lxc-fedora  lxc-openmandriva  lxc-oracle  lxc-slackware   lxc-sshd    lxc-ubuntu-cloud
lxc-altlinux  lxc-busybox    lxc-cirros  lxc-download  lxc-gentoo  lxc-opensuse      lxc-plamo   lxc-sparclinux  lxc-ubuntu

利用可用的模板创建一个centos的容器

$ sudo lxc-create -n centos_lxc -t centos

命令中

  • -n 后面的参数是新创建的container的名字
  • -t 后面的参数是创建container所用的模板的名字

创建完成后,利用工具lxc-ls可以查看当前建立的container

$ lxc-ls
centos_lxc sshd-lxc   ubuntu_lxc

新建立的container的文件系统保存在目录/var/lib/lxc/<container>/rootfs下面,同时还有一个配置文件config

$ cat config
# Template used to create this container: /usr/share/lxc/templates/lxc-centos
# Parameters passed to the template: -R 7 -a x86_64
# Template script checksum (SHA-1): 85868977b29d63f5ada56fd0d3a138854d0b5eff
# For additional config options, please look at lxc.container.conf(5)

# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)

lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.hwaddr = fe:e9:10:40:1a:93
lxc.network.flags = up
lxc.rootfs = /var/lib/lxc/centos_lxc/rootfs
lxc.rootfs.backend = dir

# Include common configuration
lxc.include = /usr/share/lxc/config/centos.common.conf

lxc.arch = x86_64
lxc.utsname = centos_lxc

# When using LXC with apparmor, uncomment the next line to run unconfined:
#lxc.aa_profile = unconfined

# example simple networking setup, uncomment to enable
#lxc.network.type = veth
#lxc.network.flags = up
#lxc.network.link = lxcbr0
#lxc.network.name = eth0
# Additional example for veth network type
#    static MAC address,
#lxc.network.hwaddr = 00:16:3e:77:52:20
#    persistent veth device name on host side
#        Note: This may potentially collide with other containers of same name!
#lxc.network.veth.pair = v-centos_lxc-e0

常用工具

  1. lxc-ls
    查看container的详细信息
$ lxc-ls -f
NAME       STATE   AUTOSTART GROUPS IPV4      IPV6
centos_lxc RUNNING 0         -      10.0.3.33 -
sshd-lxc   STOPPED 0         -      -         -
ubuntu_lxc STOPPED 0         -      -         -
  1. lxc-info
    查看某一个正在运行的container的详细信息
$ lxc-info -n centos_lxc
Name:           centos_lxc
State:          RUNNING
PID:            4139
IP:             10.0.3.33
CPU use:        0.87 seconds
...
  1. lxc-stop
    停止一个container
$ lxc-stop -n centos_lxc
  1. lxc-console
    进入一个container的控制台
$ lxc-console -n centos_lxc

Clone Container

从一个已经创建好的container克隆出一个新的来

$ lxc-clone -n centos_lxc -N centos_server

查看克隆好的新的lxc container

$ lxc-ls 
centos_client centos_lxc    centos_server sshd-lxc      ubuntu_lxc

给container分配资源

修改config文件,通过添加一行配置修改cpu分配,例如分配了CPU 0给container

lxc.cgroup.cpuset.cpus = 0

在主机和container之间共享文件夹

首先在container内部创建一个文件夹,比如说/mnt/share

$ mkdir /mnt/share

然后主机上也创建一个文件夹,比如说'/tmp/share'

$ mkdir /tmp/share

这个时候主机上保存container文件系统的目录下面也会产生/mnt/share这个目录,找到这个目录的绝对路径
修改container的配置文件config, 添加一行

lxc.mount.entry = /tmp/share /var/lib/lxc/centos_client/rootfs/mnt/share none bind 0 0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,654评论 18 139
  • 一、Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Uni...
    1b3bd36d9d21阅读 8,169评论 3 13
  • //资源管理框架(mesos/YARN/coraca/Torca/Omega)分析http://mp.weixin...
    葡萄喃喃呓语阅读 1,143评论 0 0
  • 疲倦和厌烦 在猛冲向我的身体时 也冲向了我那颗支离破碎的心 夜晚,肆意地侵犯 凄月,无奈地痛哭 只留下一地破碎的月...
    折悠阅读 174评论 0 0
  • 图、文/张晓静 如果说,真实, 可以救赎灵魂, 那么我承认, 我是一抹孤独寂寞的黑, 冷冷地看着人间的对白。 也许...
    零源宇宙阅读 322评论 5 9