精华内容
下载资源
问答
  • 1、LXC的简介 1.1、Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程资源。 1.2、LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程资源,而且不需要提供...

    1、LXC的简介

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

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

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

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

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

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

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

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

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

    1.3、LXC与docker的关系

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

    2、LXC的安装

    2.1、安装lxc 和 lxc 自带的模板包

         yum -y install lxc lxc-templates

    [root@zxomc yum.repos.d]# yum -y install lxc lxc-templates
    已加载插件:fastestmirror, refresh-packagekit, security
    设置安装进程
    Repository epel is listed more than once in the configuration
    Loading mirror speeds from cached hostfile
    解决依赖关系
    --> 执行事务检查
    ---> Package lxc.x86_64 0:1.0.11-1.el6 will be 安装
    --> 处理依赖关系 lua-lxc(x86-64) = 1.0.11-1.el6,它被软件包 lxc-1.0.11-1.el6.x86_64 需要
    --> 处理依赖关系 lua-alt-getopt,它被软件包 lxc-1.0.11-1.el6.x86_64 需要
    --> 处理依赖关系 liblxc.so.1()(64bit),它被软件包 lxc-1.0.11-1.el6.x86_64 需要
    ---> Package lxc-templates.x86_64 0:1.0.11-1.el6 will be 安装
    --> 执行事务检查
    ---> Package lua-alt-getopt.noarch 0:0.7.0-1.el6 will be 安装
    ---> Package lua-lxc.x86_64 0:1.0.11-1.el6 will be 安装
    --> 处理依赖关系 lua-filesystem,它被软件包 lua-lxc-1.0.11-1.el6.x86_64 需要
    ---> Package lxc-libs.x86_64 0:1.0.11-1.el6 will be 安装
    --> 执行事务检查
    ---> Package lua-filesystem.x86_64 0:1.4.2-1.el6 will be 安装
    --> 完成依赖关系计算
    
    依赖关系解决
    
    =================================================================================================================================================================================
     软件包                                         架构                                   版本                                           仓库                                  大小
    =================================================================================================================================================================================
    正在安装:
     lxc                                            x86_64                                 1.0.11-1.el6                                   epel                                 124 k
     lxc-templates                                  x86_64                                 1.0.11-1.el6                                   epel                                  82 k
    为依赖而安装:
     lua-alt-getopt                                 noarch                                 0.7.0-1.el6                                    epel                                 6.9 k
     lua-filesystem                                 x86_64                                 1.4.2-1.el6                                    epel                                  24 k
     lua-lxc                                        x86_64                                 1.0.11-1.el6                                   epel                                  16 k
     lxc-libs                                       x86_64                                 1.0.11-1.el6                                   epel                                 257 k
    
    事务概要
    =================================================================================================================================================================================
    Install       6 Package(s)
    
    总下载量:510 k
    Installed size: 1.3 M
    下载软件包:
    (1/6): lua-alt-getopt-0.7.0-1.el6.noarch.rpm                                                                                                              | 6.9 kB     00:00
    (2/6): lua-filesystem-1.4.2-1.el6.x86_64.rpm                                                                                                              |  24 kB     00:00
    (3/6): lua-lxc-1.0.11-1.el6.x86_64.rpm                                                                                                                    |  16 kB     00:00
    (4/6): lxc-1.0.11-1.el6.x86_64.rpm                                                                                                                        | 124 kB     00:00
    (5/6): lxc-libs-1.0.11-1.el6.x86_64.rpm                                                                                                                   | 257 kB     00:00
    (6/6): lxc-templates-1.0.11-1.el6.x86_64.rpm                                                                                                              |  82 kB     00:00
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    总计                                                                                                                                             469 kB/s | 510 kB     00:01
    运行 rpm_check_debug
    执行事务测试
    事务测试成功
    执行事务
      正在安装   : lxc-libs-1.0.11-1.el6.x86_64                                                                                                                                  1/6
    /sbin/ldconfig: /lib/libuuid.so.1 不是符号连接
    
    /sbin/ldconfig: /lib/libext2fs.so.2 不是符号连接
    
    /sbin/ldconfig: /lib/libattr.so.1 不是符号连接
    
    /sbin/ldconfig: /lib/libpamc.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libvolume_id.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libaudit.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libacl.so.1 不是符号连接
    
    /sbin/ldconfig: /lib/libdbus-1.so.3 不是符号连接
    
    /sbin/ldconfig: /lib/libgmodule-2.0.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libasound.so.2 不是符号连接
    
    /sbin/ldconfig: /lib/libtermcap.so.2 不是符号连接
    
    /sbin/ldconfig: /lib/libauparse.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libblkid.so.1 不是符号连接
    
    /sbin/ldconfig: /lib/libgobject-2.0.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libpam_misc.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libe2p.so.2 不是符号连接
    
    /sbin/ldconfig: /lib/libpam.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libss.so.2 不是符号连接
    
    /sbin/ldconfig: /lib/libexpat.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libcom_err.so.2 不是符号连接
    
    /sbin/ldconfig: /lib/libgthread-2.0.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libwrap.so.0 不是符号连接
    
    /sbin/ldconfig: /lib/libcap.so.1 不是符号连接
    
    /sbin/ldconfig: /lib/libglib-2.0.so.0 不是符号连接
    
      正在安装   : lua-filesystem-1.4.2-1.el6.x86_64                                                                                                                             2/6
      正在安装   : lua-lxc-1.0.11-1.el6.x86_64                                                                                                                                   3/6
      正在安装   : lua-alt-getopt-0.7.0-1.el6.noarch                                                                                                                             4/6
      正在安装   : lxc-1.0.11-1.el6.x86_64                                                                                                                                       5/6
      正在安装   : lxc-templates-1.0.11-1.el6.x86_64                                                                                                                             6/6
      Verifying  : lxc-1.0.11-1.el6.x86_64                                                                                                                                       1/6
      Verifying  : lua-lxc-1.0.11-1.el6.x86_64                                                                                                                                   2/6
      Verifying  : lxc-libs-1.0.11-1.el6.x86_64                                                                                                                                  3/6
      Verifying  : lxc-templates-1.0.11-1.el6.x86_64                                                                                                                             4/6
      Verifying  : lua-alt-getopt-0.7.0-1.el6.noarch                                                                                                                             5/6
      Verifying  : lua-filesystem-1.4.2-1.el6.x86_64                                                                                                                             6/6
    
    已安装:
      lxc.x86_64 0:1.0.11-1.el6                                                          lxc-templates.x86_64 0:1.0.11-1.el6
    
    作为依赖被安装:
      lua-alt-getopt.noarch 0:0.7.0-1.el6           lua-filesystem.x86_64 0:1.4.2-1.el6           lua-lxc.x86_64 0:1.0.11-1.el6           lxc-libs.x86_64 0:1.0.11-1.el6
    
    完毕!
    

    2.2、检测环境

    lxc-checkconfig  :此命令用于检测当前系统配置是否满足创建 container的要求,如果输出所有项均为enbale状态,则表明内核支持lxc容器,否则需重新编译内核打开相应功能项。具体如何编译内核此文暂不涉及,有需要的可以网上找其他文献。

    lxc-checkconfig
    Kernel configuration not found at /proc/config.gz; searching...
    Kernel configuration found at /boot/config-3.10.5-3.el6.x86_64
    --- Namespaces ---
    Namespaces: enabled
    Utsname namespace: enabled
    Ipc namespace: enabled
    Pid namespace: enabled
    User namespace: missing
    Network namespace: enabled
    Multiple /dev/pts instances: 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
    
    --- Misc ---
    Veth pair device: enabled
    Macvlan: enabled
    Vlan: enabled
    Bridges: enabled
    Advanced netfilter: enabled
    CONFIG_NF_NAT_IPV4: enabled
    CONFIG_NF_NAT_IPV6: enabled
    CONFIG_IP_NF_TARGET_MASQUERADE: enabled
    CONFIG_IP6_NF_TARGET_MASQUERADE: enabled
    CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled
    
    --- Checkpoint/Restore ---
    checkpoint restore: missing
    CONFIG_FHANDLE: enabled
    CONFIG_EVENTFD: enabled
    CONFIG_EPOLL: enabled
    CONFIG_UNIX_DIAG: enabled
    CONFIG_INET_DIAG: enabled
    CONFIG_PACKET_DIAG: enabled
    CONFIG_NETLINK_DIAG: enabled
    File capabilities: enabled
    
    Note : Before booting a new kernel, you can check its configuration
    usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

    2.3创建一个名为myContainer的容器,模板名称为/usr/share/lxc/template/lxc-centos

    # lxc-create -n myContainer -t /usr/share/lxc/template/lxc-centos

    # lxc-create -n myContainer -t /usr/share/lxc/template/lxc-centos
    lxc_container: utils.c: get_template_path: 1106 No such file or directory - bad template: /usr/share/lxc/template/lxc-centos
    lxc_container: lxccontainer.c: lxcapi_create: 1231 bad template: /usr/share/lxc/template/lxc-centos
    lxc_container: lxc_create.c: main: 274 Error creating container myContainer

    上述错误的主要原因是:没有lx-centos的模板

    # lxc-create -n myContainer
    A template must be specified.
    Use "none" if you really want a container without a rootfs.
    [root@zxomc yum.repos.d]# lxc-create -n myContainer -t none

    使用 -t none 表示不为此容器创建使用的模板。

    2.4创建一个myContainer的容器后,我们可以使用lxc-info -n myContainer命令查看此容器的信息

     lxc-info -n myContainer
    Name:           myContainer
    State:          STOPPED
    

    新创建的容器位于/var/lib/lxc/ 目录下。

    此处需要注意,由于创建容器时没有指定模板,所以创建的容器没有rootfs相关信息。由于模板是一个脚本文件,执行了一系列操作,包括创建容器的时候挂载文件系统,配置网络,安装必要软件,创建用户/属组,设置密码等。所以一旦我们没有指定模板,那么创建的容器便无法正常使用。

     

    2.5 此时使用  lxc-start -n myContainer命令尝试启动一个容器时,会遇到如下错误:

    lxc-start -n myContainer
    lxc-start: conf.c: instantiate_veth: 3115 failed to attach 'vethLOMVGD' to the bridge 'virbr0': No such device
    lxc-start: conf.c: lxc_create_network: 3407 failed to create netdev
    lxc-start: start.c: lxc_spawn: 875 failed to create the network
    lxc-start: start.c: __lxc_start: 1149 failed to spawn 'myContainer'
    lxc-start: lxc_start.c: main: 336 The container failed to start.
    lxc-start: lxc_start.c: main: 340 Additional information can be obtained by setting the --logfile and --logpriority options.

    上述错误的主要原因是没有virbr0网桥。

    解决上述错误的方法时创建此virbr0网桥,具体方法如下:

    (A)下包

    # yum install bridge-utils -y

    (B)查看网桥信息

    # brctl show

    (C)创建virbr0 网桥

    # brctl addbr virbr0

    (D)查看网桥创建成功

    # ip a |grep virbr0

    (E)激活网桥

    # ip link set dev virbr0 up

    # ip a 查询是否激活  

    (F)配置网桥地址

    # ip addr add 10.1.0.1/24 dev virbr0

    2.6 lxc的简单命令

    (1)lxc-checkconfig:

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

    (2)lxc-create:创建lxc容器;

         lxc-create  -n name [-f config_file] [ -t template] 
    创建一个系统对象来存储配置和用户信息,该对象保存/var/lib/lxc(注意该目录为版本相关的,不同版本的lxc可能不同)目录下,name为其标示符。如果配置文件未指定,则系统会支持默认的资源隔离:PID,sysv IPC和挂载点。 

    默认创建的config文件的内容:

    lxc.network.type = veth
    lxc.network.flags = up
    lxc.network.link = virbr0
    

    (3)lxc-start:启动容器;

      lxc-start -n NAME 

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

      lxc-stop -n NAME 

          关闭一个容器。与lxc-start类似,要stop的容器必须是已经lxc-create并且lxc-start的

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

      lxc-info -n NAME

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

        彻底删除一个容器,与之相关的一切数据都不可用

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

    (8)冻结该容器所有的进程。进程会被锁定,直到lxc-unfreeze进行解锁。
             lxc-freeze -n name
    (9)用于解除被lxc-freeze冻结的容器进程。
             lxc-unfreeze -n name

    展开全文
  • LXC于2008年首次引入,从其之前的Solaris Containers(或Solaris Zones)FreeBSD jail中采用了其大部分功能。 LXC无需创建完整的虚拟机,而是可以通过自己的进程网络空间来实现虚拟环境。通过使用命名空间来强制...

    LXC于2008年首次引入,从其之前的Solaris Containers(或Solaris Zones)和FreeBSD jail中采用了其大部分功能。

    LXC无需创建完整的虚拟机,而是可以通过自己的进程和网络空间来实现虚拟环境。通过使用命名空间来强制执行进程隔离,并利用内核本身的控制组(cgroup)功能,该功能可以限制,说明和隔离一个或多个进程的CPU,内存,磁盘I / O和网络使用情况。将此用户空间框架视为的一种非常高级的形式 chroot。

    值得注意的是,LXC使用Namespace(名称空间)来实现进程隔离,同时使用内核自己的cgroup来解决并限制一个或多个进程中的CPU,内存,磁盘I / O和网络使用情况。

    容器到底是什么

    简短的答案是,容器使软件应用程序与操作系统脱钩,从而为用户提供了一个干净而最小的Linux环境,同时在一个或多个隔离的“容器”中运行其他所有内容。容器的目的是启动一组有限的应用程序或服务(通常称为微服务),并使它们在独立的沙盒环境中运行。

    这种隔离可防止在给定容器中运行的进程监视或影响在另一个容器中运行的进程。同样,这些容器化服务不会影响或干扰主机。能够将分散在多个物理服务器上的许多服务整合为一个的想法是数据中心选择采用该技术的众多原因之一。

    容器功能

    安全性:网络服务可以在容器中运行,从而限制了由于安全漏洞或违反而造成的损害。入侵者成功利用该容器中运行的一个应用程序上的安全漏洞,仅限于该容器中可能采取的一系列操作。
    隔离:容器允许在同一台物理计算机上部署一个或多个应用程序,即使这些应用程序必须在不同的域下运行,每个域都需要对其各自资源的独占访问权。例如,在不同容器中运行的多个应用程序可以通过使用与每个容器关联的不同IP地址绑定到同一物理网络接口。
    虚拟化和透明性:容器为系统提供了虚拟化的环境,可以隐藏或限制其下的物理设备或系统配置的可见性。容器背后的一般原则是,除了解决安全性或隔离性问题之外,避免更改运行应用程序的环境。
    Docker主要致力于

    云原生时代,你真的懂Docker和LXC的区别吗?
    可移植性:Docker提供了基于镜像的部署模型。这种类型的可移植性提供了一种跨多个环境共享应用程序或服务集(及其所有依赖项)的简便方法。
    版本控制:单个Docker映像由一系列组合的层组成。每当更改图像时,都会创建一个新层。例如,每次用户指定命令(例如run或)时 ,都会创建一个新层 copy。Docker将这些层重用于新的容器构建。与Docker分层是它自己的版本控制方法。
    回滚:同样,每个Docker映像都有层。如果从根本上说,Docker和LXC都非常相似。它们都是用户空间和轻量级虚拟化平台,它们实现cgroup和名称空间来管理资源隔离。但是,两者之间存在许多明显的差异。不想使用当前运行的图层,则可以回滚到以前的版本。这种敏捷性使软件开发人员可以更轻松地连续集成和部署他们的软件技术。
    快速部署:准备一个新的机器通常可能需要几天的时间。而且安装和配置它的工作量和开销非常重。使用Docker,可以通过将启动和运行镜像所需的时间减少到几秒钟来避免所有这些情况。用完容器后,就可以轻松销毁它。
    从根本上说,Docker和LXC都非常相似。它们都是用户空间和轻量级虚拟化平台,它们实现cgroup和名称空间来管理资源隔离。但是,两者之间存在许多明显的差异。

    Docker与LXC的差异

    使用范围

    LXC:Linux 环境。
    Docker:Docker 可以在 Linux 上运行,也可以在Windows 上运行。并且支macos,因此 Docker 并不完全依赖于 Linux,而是本机使用它运行的操作系统。

    人气

    LXC:LXC 已经很老了,但由于一些限制,在开发人员和管理员中并没有得到多少普及。

    Docker:Docker 使容器超越了操作系统级别,以自身合并应用程序的粒度。可以说 docker 是 LXC 的扩展,因此受到欢迎。

    工具
    LXC:LXC 工具与运行裸机服务器的传统系统管理员非常接近,即直接 SSH 访问,这允许使用团队可能在裸机或运行在其上的虚拟机上使用的自动化脚本Virtual Box 和任何其他虚拟化生产环境。这种可移植性功能使任何应用程序从传统 Linux 服务器迁移到在 LXC 容器上运行的过程非常无缝,但前提是尚未使用任何其他容器化解决方案,例如 dockers。

    Docker:在 Docker 的情况下,工具以 Docker CLI(命令行界面)为中心,其中包含用于列出镜像、收集和处理 Docker 镜像的命令。Docker Hub 是一个公共镜像注册中心,可以为常用应用程序提供对可变数量镜像的访问。如果需要,您还可以下载所需的操作系统镜像,以便在 docker 容器上运行。例如,假设一个 Docker 容器中的 Linux 操作系统。这个特殊的功能通常与一些 LXC 容器相关联,这使我们能够在不需要 VM 的情况下运行操作系统。但是,Docker 容器在处理应用程序时重量更轻,以支持快速节奏,实现更高的可扩展性,并使用微服务架构部署所需的应用程序。

    生态

    LXC:不需要任何其他供应商来提供 LXC 的工具,因为我们已经在 Linux 上使用的生态系统也足以支持 LXC。

    Docker:Docker 需要对庞大的生态系统提供更专业的支持。Docker 得到 AWS、IBM、Google 和 Microsoft Azure 等主要云提供商的支持。Docker 生态系统包括 Docker Swarm 来管理 Docker 容器集群;Docker Trusted Registry 用于管理 Docker 镜像的注册表;Docker Compose 在需要交换数据的多个容器上启动多个应用程序,最后,Docker Machine 创建启用 docker 的虚拟机。

    使用便利
    LXC:从 VM 迁移到 LXC 非常容易,因为 LXC 为系统映像运行标准的 init,这使您可以在 docker 容器上运行。例如,更不用说 Docker 容器中的 Linux 操作系统。这个特殊的功能通常与一些 LXC 容器相关联,这使我们能够在不需要 VM 的情况下运行操作系统。
    Docker:Docker 容器在处理应用程序时重量更轻,以支持快速节奏,实现更高的可扩展性,并使用微服务架构部署所需的应用程序。

    LXC 提供了 Linux 上 VE 的优势,主要是能够将私有工作负载相互隔离。与 VM 相比,它是一种更便宜、更快速的解决方案,但这样做需要一些额外的学习和专业知识。Docker 是对 LXC 能力的重大改进,它的明显优势是因为足够简单学习成本低并不依赖操作系统。

    展开全文
  • Docker和LXC有什么不同

    2017-02-13 15:42:29
    Docker和LXC有什么不同

    Docker和LXC有什么不同

    展开全文
  • Docker和LXC简介

    2021-11-30 19:51:12
    一、Docker产生的背景 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司不得不面对的问题,特别是各种版本的迭代之后,不同版本...

    一、Docker产生的背景

    一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员是考验。
    Docker之所以发展如此迅速,也是因为他对此给出了一个标准化的解决方案。
    环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带安装环境?也就是说,安装的时候,把原始环境一模一样的复制过来。让开发人员利用Docker可以消除协作编码是“在我的机器上可正常工作”的问题。
    之前在服务器配置一个应用的运行环境,要安装各种软件,JAVA//TOMCAT/MYSQL等。安装和配置这些东西有多麻烦就不说了,它还不能跨平台。假如我们是在windonws上安装的这些环境,到了Linux又要重新安装。况且就算不夸操作系统,换另一台同样操作系统的服务器,要移植应用也是非常麻烦的。
    传统上认为,软件棉麻开发、测试结束后所产出的成果即使是程序或者是能够编译执行的二进制字节码等(java为例)。而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让运维团队得以部署应用程序,开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发行部署失败的状况。Docker镜像的设计,使得Docker得以打破过去[程序即应用]的观念。透过镜像(images)将作业系统核心除外,运作应用程序所需要的系统环境,有下而上打包,达到应用程序式跨平台之间的无缝接轨运作。
    在这里插入图片描述

    二、Docker的理念

    Docker是基于Go语言实现的云开源项目。
    Docker的主要目标是“build,ship and run any app,anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个web应用或数据库应用等等)及其运行环境能够做到“一次封装,导出运行”。
    Linux容器技术的出现就解决了这样一个问题,而Docker就是在他的基础上发展过来的。将应用运行在Docer容器上面,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台,跨服务器。只需要一次配置好环境,换到别的机子就可一键部署好,大大简化了操作。

    三、Docker是什么

    概念 : 解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

    四、Docker能干什么

    1.之前的虚拟机技术

    虚拟机(virtual machine)就是带环境安装的一种解决方案。
    它可以在一种操作系统里面运行另一种操作系统,比如字windows系统里面运行Liunx系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删除,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作凶弹和硬件三者之间的逻辑不变。

    虚拟机的缺点:

    • 资源占用多
    • 冗余步骤多
    • 启动慢

    2.容器虚拟化技术

    由于前面虚拟机存在这些缺点,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,缩写为LXC)。
    Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境 中的软件都能始终如一的运行。
    .比较了Docker和传统虚拟化方式的不同之处:

    传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上在运行所需应用进程。
    而容器内的应用进程直接运行与宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟,因此容器要比传统虚拟机更为轻便。

    3.开发/运维(Devops)

    一次构建,随处运行

    • 更快速的应用交付和部署
    • 更敏捷的升级和扩缩容
    • 更简单的系统运维
    • 更高效的计算资源利用

    四、LXC概念

    1.LXC是什么?

    LXCLinux containers的简称,是一种基于容器的操作系统层级的虚拟化技术。

    2.LXC可以做什么?

    LXC可以在操作系统层次上为进程提供的虚拟的执行环境,一个虚拟的执行环境就是一个容器。可以为容器绑定特定的cpumemory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。

    3.LXC如何实现?

    Sourceforge上有LXC这个开源项目,但是LXC项目本身只是一个为用户提供一个用户空间的工具集,用来使用和管理LXC容器。LXC真正的实现则是靠Linux内核的相关特性,LXC项目只是对此做了整合。基于容器的虚拟化技术起源于所谓的资源容器和安全容器。

    LXC在资源管理方面依赖与Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flagNEWNS NEWPID等等)。

    4.为什么要选择LXC?

    LXC是所谓的操作系统层次的虚拟化技术,与传统的HAL(硬件抽象层)层次的虚拟化技术相比有以下优势:

    • 更小的虚拟化开销(LXC的诸多特性基本由内核特供,而内核实现这些特性只有极少的花费,具体分析有时间再说)
    • 快速部署。利用LXC来隔离特定应用,只需要安装LXC,即可使用LXC相关命令来创建并启动容器来为应用提供虚拟执行环境。传统的虚拟化技术则需要先创建虚拟机,然后安装系统,再部署应用。
    • LXC跟其他操作系统层次的虚拟化技术相比,最大的优势在于LXC被整合进内核,不用单独为内核打补丁
    展开全文
  • Docker学习笔记 — DockerLXC的区别

    万次阅读 2015-04-14 16:11:31
    DockerLXC的区别
  • Docker和LXC有什么不同?

    2017-09-25 10:55:00
    本文讲的是Docker和LXC有什么不同?,【编者的话】Docker和LXC有什么不同?这大概是很多初学者的困惑所在,为什么说Docker不是LXC的一个替代方案呢? Docker基于LXC的基础上做了哪些有想象力的工作呢? 本文作者就此分享...
  • docker和LXC简介

    2021-11-30 21:53:32
    文章目录1、什么是LXC2、什么是dockerdocker工作方式Docker产生的背景 1、什么是LXC LXC(LinuX Container)简称Linux的容器,是世界上第一个容器应用。它将容器技术做的更加易用了,把用到的容器功能做成一种工具,...
  • Proxmox 的LXC容器安装docker的方法,限制条件,只能在unbuntu容器中安装,centos的容器测试不成功。
  • 本文转发自: ... 本文对Docker和LXR区别的描述比较准确。  From the launch of docker Top cloud service providers launched their co
  • LXCDocker之间的主要区别

    千次阅读 2018-03-23 09:51:57
    编者的话:这篇翻译文章从两个部分来探讨LXC,LXC和Docker的容器托管,以及轻便的容器技术将取代虚拟技术的可能性。LXC有可能会改变我们如何运行和缩放应用程序。Dr.Rami Rosen 做过一个很棒的演示文稿,是关于LXC的...
  • DockerLXC、LXD这三种容器的区别

    万次阅读 2018-03-01 17:56:30
    在部署完成CORD 环境中...LXC和LXD 在介绍LXD之前先介绍LXC,因为LXD可以视作LXC的升级版。LXD的管理命令和LXC的管理命令大多相同。 LXC起源于cgroup和namespaces,使得进程之间相互隔离,即进程虚拟化。 LXC有一...
  • docker LXC

    2018-03-12 08:51:20
    LXC,其名称来自Linux软件容器(Linux Containers)的缩写,一种操作系统层虚拟化(Operating system–level virtualization)技术。LXC利用cgroups与namespace的功能,提供应用软件一个独立的操作系统环境。LXC不...
  • DockerLXC、虚拟机异同

    千次阅读 2017-10-08 13:13:48
    一、DockerLXC基础上做了什么 LXC,一般指Linux Container,即内核容器技术的简称。Docker在内核容器技术上做了什么工作,简单的说,Docker在内核容器技术(CgroupNamespace)的基础上,提供了一个更高层的控制...
  • WZT – 擅长系统底层编程,13年网络安全经验。精通Unix体系结构下的内核攻击与防护,曾... 讲述基于Linux namespace技术的沙箱原理,同时描述Docker的实现细节以及如何利用内核漏洞来绕过Docker/LXC获取系统所有权限
  • 容器技术不是模仿硬件层次,而是 在Linux内核里使用cgroupnamespaces来打造轻便的、将近裸机速度的虚拟技术操作系统环境。因为不是虚拟化存储,所以容器技术不会管 底层存储或者文件系统,而是你放哪里,它操作...
  • Docker 是 dotCloud 最近几个月刚宣布的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署运行应用程序,并通过配置文件可以轻松...
  • 生产环境中,启动Docker容器的话,通常用Guest OS方式启动,便于管理维护,不会直接启动APP(nginx,tomcat,redis)容器 启动容器是,通常会设定每个容器的资源配置:例如CPU、MEM、DISK、NET CPU,核心数设定...
  • LXCDocker的主要区别

    2017-09-09 14:33:21
    Docker和LXC
  • Proxmox 的 LXC上跑 Docker

    千次阅读 2020-05-13 15:06:24
    Proxmox VE 6.1 基于 LXC 容器环境运行 Docker,配置步骤: 1. LXC 容器不要开启特权模式,否则登陆可能会出现问题(测试时一直登陆失败); 2. 生成 LXC 容器化虚拟机后,需要修改 /etc/pve/xxx.conf,追加如下...
  • 安装不了 ,安装上了也运行不了,放弃吧。 非要安装就用kvm架构的吧
  • KVM与容器之间的性能对比
  • dockerLXC技术

    2016-06-25 11:00:13
    之前dokcer是使用linux的containter技术LXC来实现OS虚拟化,实现容器进程的隔离,目前docker使用libcontainter技术即自已用GO语言开发的容器技术 容器性质是如何实现的?如何达到容器的隔离性?   1.kernel ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,195
精华内容 4,478
关键字:

docker和lxc