本文收录在容器技术学习系列文章总目录

一、LXC介绍

1、Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。

2、LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优势在于:

(1)与宿主机使用同一个内核,性能损耗小;

(2)不需要指令级模拟;

(3)不需要即时(Just-in-time)编译;

(4)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;

(5)避免了准虚拟化和系统调用替换中的复杂性;

(6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。

总结:Linux Container是一种轻量级的虚拟化的手段。

3、Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。

4、LXC与docker的关系

(1)Docker并不是LXC的替代品,Docker的底层就是使用了LXC来实现的。LXC将Linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。
(2)在LXC的基础之上,Docker提供了一系列更强的功能。

二、安装使用lxc

1、简单操作命令

lxc-checkconfig:

  检查系统环境是否满足容器使用要求;

lxc-create:创建lxc容器;

  lxc-create -n NAME -t TEMPLATE_NAME

lxc-start:启动容器;

  lxc-start -n NAME -d

lxc-stop:停止容器;(停止命令很慢)

  lxc-stop -n NAME -d

lxc-info:查看容器相关的信息;

  lxc-info -n NAME

lxc-destory:删除处于停机状态的容器;

lxc-snapshot:创建和恢复快照;

2、安装

(1)安装lxc 和lxc 自带的模板包

[root@centos7-1 ~]# yum -y install lxc lxc-templates

(2)检测环境

[root@centos7-1 ~]# lxc-checkconfig

(3)创建名为c1 的容器

[root@centos7-1 ~]# lxc-create -n c1 -t /usr/share/lxc/templates/lxc-centos

(4)安装完以后,会显示 在哪个目录下,密码存放在哪,和修改密码的命令

[root@centos7-1 ~]# cat /var/lib/lxc/c1/tmp_root_pass 查询密码

[root@centos7-1 ~]# chroot /var/lib/lxc/c1/rootfs passwd 修改密码

3、开启一台lxc 容器

(1)尝试开启

[root@centos7-1 ~]# lxc-start -n c1 会报错,没有virbr0 网桥

(2)创建网桥

① 下包

[root@centos7-1 ~]# yum install bridge-utils -y

② 查看网桥信息

[root@centos7-1 ~]# brctl show

③ 创建virbr0 网桥

[root@centos7-1 ~]# brctl addbr virbr0

④ 查看网桥创建成功

[root@centos7-1 ~]# ip a |grep virbr0

⑤ 激活网桥

[root@centos7-1 ~]# ip link set dev virbr0 up

[root@centos7-1 ~]# ip a 查询是否激活

⑥ 配置网桥地址

[root@centos7-1 ~]# ip addr add 10.1.0.1/24 dev virbr0

(3)再次登录

① 登录

[root@centos7-1 ~]# lxc-start -n c1 输入用户密码登录

② 添加ip 地址10.1.0.2

[root@c1 ~]# ip addr add 10.1.0.2/24 dev eth0

③ 测试与宿主机已经连通

[root@c1 ~]# ping 10.1.0.1

4、开启第2台容器

① 创建c2

[root@centos7-1 ~]# lxc-create -n c2 -t /usr/share/lxc/templates/lxc-centos

② 改密码

[root@centos7-1 ~]# chroot /var/lib/lxc/c2/rootfs passwd

③ 登录

[root@centos7-1 ~]# lxc-start -n c2

④ 添加ip 地址10.1.0.3

[root@c2 ~]# ip addr add 10.1.0.3/24 dev eth0

⑤ 测试与宿主机和另一台容器c1 的连通

[root@c2 ~]# ping 10.1.0.1

[root@c2 ~]# ping 10.1.0.2

⑥ 在宿主机上,查询容器状况

[root@centos7-1 ~]# lxc-top

5、使容器连通外网

(1)在宿主机 配置 NAT规则

① 打开核心转发

[root@centos7-1 ~]# sysctl -w net.ipv4.ip_forward=1

② 做NAT 规则

[root@centos7-1 ~]# iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.10.103

(2)在两个容器内添加网关

[root@c1 ~]# ip route add default via 10.1.0.1 添加网关

[root@c1 ~]# ip route sh 查询网关

[root@c1 ~]# ping www.baidu.com 测试网关是否生效

6、LXC 的web管理页面

(1)下载git 项目

[root@centos7-1 ~]# git clone https://github.com/lxc-webpanel/LXC-Web-Panel.git

(2)安装python-flask,因为该项目是Python开发

(a)下载安装pip

① 准备安装pip 环境

[root@centos7-1 ~]# wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg

[root@centos7-1 ~]# sh setuptools-0.6c11-py2.7.egg

② 官网下载pip,https://pypi.org/project/pip/#files

③ 安装

[root@centos7-1 ~]# tar xvf pip-10.0.1.tar.gz 解包

[root@centos7-1 ~]# cd pip-10.0.1/

[root@centos7-1 pip-10.0.1]# python setup.py install

(b)使用pip安装flask

[root@centos7-1 ~]# pip install python-flask

(3)开启lxc web管理页面的服务

① 开启

[root@centos7-1 ~]# cd LXC-Web-Panel/

[root@centos7-1 LXC-Web-Panel]# python lwp.py

② 网页登录

③ 网页功能:一些容器的控制;开启,关闭,创建/克隆/重启容器,调节容器资源限制... ...

Docker系列02—LXC---Docker的“前身”的更多相关文章

  1. docker系列四之docker镜像与容器的常用命令

    docker镜像与容器的常用命令 一.概述   docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...

  2. Docker系列02: 容器生命周期管理 镜像&容器

    A) Docker信息1. 查看docker运行状态 systemctl status docker docker.service - Docker Application Container Eng ...

  3. Docker系列二:Docker的基本结构

    Docker的基本结构 Docker 的三大基础组件 Docker有三个重要的概念:仓库 , 镜像 和 容器 ,它们是Docker的三大基出组件 Docker的组织结构 Docker处于操作系统和虚拟 ...

  4. 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍

    docker出来也有很多年了,但用到的公司其实并不是很多,docker对传统开发是一个革命性的,几乎颠覆了之前我们传统的开发方法和部署模式,而大多 公司保守起见或不到万不得已基本上不会去变更现有模式. ...

  5. Docker系列(七):Docker图形化管理和监控

    Docker管理工具之官方三剑客 Docker Machine是什么鬼 从前 现在 你需要登录主机,按照主机及操作系统特有的安装以及配置步骤安装Docker,使其 能运行Docker容器. Docke ...

  6. Docker系列(一):Docker简单介绍

    Docker简介: 多语言和框架:支持多语言和框架以及语言框架的扩展机制 多服务:开放的核心服务以及服务的扩展机制 多云和多IaaS技术:支持多种IaaS技术和多云的部署,包括公有云和私有云 Dock ...

  7. Docker系列一:Docker基本概念及指令介绍

    1. Docker是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用 ...

  8. Docker系列一:Docker的介绍和安装

    Docker介绍 Docker是指容器化技术,用于支持创建和实验Linux Container.借助Docker,你可以将容器当做重量轻.模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对 ...

  9. Docker系列(五):Docker网络机制(上)

    Linux路由机制打通网络 路由机制是效率最好的 docker128上修改Docker0的网络地址,与docker130不冲突 vi /usr/lib/systemd/system/docker.se ...

随机推荐

  1. socket error:10053

    系统提示:10053,由于超时或其它失败,连接中止 服务端和客户端并没有出现连接错误或主动关闭连接 发生这个错误的原因往往是连接上了,但是长时间没有通信,所以连接被挂起了 防止的办法就是自己设计心跳包 ...

  2. CSS、常用标签属性

    div的样式:[width:宽度 :100像素.height:高度100px.background:背景颜色红色] 内嵌的形式:用<style type="text/css>&l ...

  3. 记录一种下载https网址中的mp4文件的方法

    需要下载一个网页中的视频, 页面中的视频播放器为 JW player, 通过搜索发现可以下载对应的视频. 1. 使用chrome浏览器分析 网页中的视频地址: F12或者右键-->检查, 在打开 ...

  4. Java-IO流之File操作和Properties操作

    java的File类主要是用来操作文件的元数据,稍作演示如下: 其中方法getAllJavaFile()是使用了过滤器FileFileter,这个过滤器只需要实现accept方法,判断什么样的文件返回 ...

  5. 文件上传控件bootstrap-fileinput的使用

    1.插件下载地址:https://github.com/kartik-v/bootstrap-fileinput 2.插件的引用 需要引用jquery 需要结合bootstrap使用,即页面需要引入b ...

  6. Cloud Native 云化架构阅读笔记

    一• Cloud Native CloudNative是什么? Cloud Native翻译为云原生,是Matt Stine提出的一个概念,它是一个思想的集合,包括DevOps.持续交付(Contin ...

  7. angular.js学习笔记(一)

    1.angular单项数据绑定 2.不要使用控制器的时候: 任何形式的DOM操作:控制器只应该包含业务逻辑.DOM操作则属于应用程序的表现层逻辑操作,向来以测试难度之高闻名于业界.把任何表现层的逻辑放 ...

  8. JavaScript 异步编程的前世今生(上)

    前言 提到 JavaScript 异步编程,很多小伙伴都很迷茫,本人花费大约一周的业余时间来对 JS 异步做一个完整的总结,和各位同学共勉共进步! 目录 part1 基础部分 什么是异步 part2 ...

  9. [Swift]LeetCode446. 等差数列划分 II - 子序列 | Arithmetic Slices II - Subsequence

    A sequence of numbers is called arithmetic if it consists of at least three elements and if the diff ...

  10. 优化之Aggregator组件

    Aggregator组件通常会降低性能,因为它们必须在处理数据之前对数据进行分组 Aggregator组件需要额外的内存来保存中间组结果 通过如下方式对Aggregator组件进行优化 简化group ...