当前位置: 首页 > 知识库问答 >
问题:

Docker向lxc工具(用户空间lxc工具)添加了什么?

江凯风
2023-03-14

如果你看看Docker的功能,大部分已经由LXC提供了。

那么Docker添加了什么?我为什么要使用Docker而不是普通的LXC?

共有3个答案

赖明煦
2023-03-14

上面的帖子

LXD现在为LXC容器映像实现了一个存储库,用户可以从该存储库中推/拉以对其进行贡献或重用。

LXD到LXC的RESTAPI现在支持本地和

LXD的主要功能包括:

  • 设计安全(非特权容器、资源限制等)

OpenStack现在有了NCLXD插件,允许OpenStack利用LXD将LXC容器部署/管理为OpenStack中的VM,而不是使用KVM、vmware等。

但是,NCLXD还支持混合传统HW VM和LXC VM的混合云。

OpenStack nclxd插件支持的功能列表包括:

stop/start/reboot/terminate container
Attach/detach network interface
Create container snapshot
Rescue/unrescue instance container
Pause/unpause/suspend/resume container
OVS/bridge networking
instance migration
firewall support

到2016年4月Ubuntu 16.04发布时,将会有额外的酷炫功能,如块设备支持、实时迁移支持。

章誉
2023-03-14

让我们看看DOCKER的技术特征列表,看看哪些是LXC提供的,哪些不是。

1)文件系统隔离:每个进程容器在一个完全独立的根文件系统中运行。

提供普通LXC。

2)资源隔离:系统资源(如cpu和内存)可以使用cgroup不同地分配给每个进程容器。

提供普通LXC。

3) 网络隔离:每个进程容器在其自己的网络名称空间中运行,具有自己的虚拟接口和IP地址。

提供普通LXC。

4) 写时拷贝:根文件系统是使用写时拷贝创建的,这使得部署速度非常快,内存和磁盘都非常便宜。

这是由Docker所依赖的联合文件系统AUFS提供的。您可以使用LXC手动设置AUFS,但Docker使用它作为标准。

5) 日志记录:收集并记录每个流程容器的标准流(stdout/stderr/stdin),以便实时或批量检索。

Docker提供了这个。

6) 更改管理:对容器文件系统的更改可以提交到新映像中,并重新用于创建更多容器。无需模板或手动配置。

“模板或手动配置”是对LXC的参考,在这里您需要了解这两方面的内容。Docker允许您以处理虚拟机的方式处理容器,而无需了解LXC配置。

7)交互式shell:docker可以分配一个伪tty并附加到任何容器的标准输入,例如运行一个一次性交互式shell。

LXC已经提供了这一功能。

我刚刚开始学习LXC和Docker,所以我欢迎任何更正或更好的答案。

勾学博
2023-03-14

来自Docker常见问题解答:

docker不是lxc的替代品。lxc指的是linux内核的功能(特别是命名空间和控制组),这些功能允许互相沙箱处理,并控制它们的资源分配。

在内核功能的底层基础之上,Docker提供了一个具有几个强大功能的高级工具:

>

  • 跨机器的可移植部署。Docker定义了一种将应用程序及其所有依赖项捆绑到单个对象中的格式,该对象可以传输到任何支持docker的机器,并在那里执行,同时保证向应用程序公开的执行环境是相同的。lxc实现了进程沙箱,这是可移植部署的重要先决条件,但仅此还不足以进行可移植部署。如果你给我发送了一个安装在自定义lxc配置中的应用程序的副本,它几乎肯定不会像在你的机器上那样在我的机器上运行,因为它与你的机器的特定配置相关联:网络、存储、日志记录、发行版等。Docker为这些特定于机器的设置定义了一个抽象,因此完全相同的docker容器可以在许多不同的机器上运行——保持不变——并具有许多不同的配置。

    以应用程序为中心。Docker针对应用程序的部署进行了优化,而不是针对机器。这反映在它的应用编程接口、用户界面、设计理念和留档上。相比之下,lxc助手脚本将容器作为轻量级机器——基本上是引导速度更快、需要更少内存的服务器。我们认为容器不仅仅是这样。

    自动构建。Docker包括一个工具,开发人员可以从他们的源代码中自动组装容器,完全控制应用程序依赖关系、构建工具、打包等。他们可以自由使用make,maven,厨师,木偶,盐,debian包,rpms,源tarball或上述任何组合,无论机器的配置如何。

    版本控制。Docker包括类似git的功能,用于跟踪容器的后续版本、检查版本之间的差异、提交新版本、回滚等。历史还包括容器是如何组装的以及由谁组装的,因此您可以从生产服务器一直追溯到上游开发人员。Docker还实现了增量上传和下载,类似于“git pull”,因此只需发送diff即可传输容器的新版本。

    组件重用。任何容器都可以用作“基本映像”,以创建更专门的组件。这可以手动完成,也可以作为自动构建的一部分来完成。例如,您可以准备理想的python环境,并将其用作10个不同应用程序的基础。您理想的postgresql设置可以重新用于您未来的所有项目。等等

    分享。Docker可以访问一个公共注册表(https://registry.hub.docker.com/),在那里成千上万的人上传了有用的容器:从redis、Couchdb、postgres到irc bouncers、rails应用服务器、hadoop到各种发行版的基本图像。注册表还包括由docker团队维护的有用容器的官方“标准库”。注册表本身是开源的,因此任何人都可以部署自己的注册表来存储和传输私有容器,例如用于内部服务器部署。

    工具生态系统。Docker定义了一个API,用于自动化和定制容器的创建和部署。有大量工具与docker集成以扩展其功能。PaaS类部署(Dokku、Deis、Flynn)、多节点编排(maestro、salt、mesos、openstack nova)、管理仪表盘(docker ui、openstack horizon、Shippyard)、配置管理(chef、puppet)、持续集成(jenkins、strider、travis),Docker正在迅速成为基于容器的工具的标准。

    我希望这有帮助!

  •  类似资料:
    • 问题内容: 如果您看一下Docker的功能,大多数功能已经由LXC提供。 那么Doc​​ker添加了什么呢?为什么要在普通LXC上使用Docker? 问题答案: 从Docker FAQ中: Docker不能替代lxc。“ lxc”是指linux内核(特别是名称空间和控制组)的功能,这些功能允许彼此进行沙盒处理并控制其资源分配。 在此低级内核功能基础之上,Docker提供了具有多种强大功能的高级工具

    • 问题内容: 我只想在JTextPane中的某些文本上添加一些工具提示。例如,如果JTextPane中有参考链接文本,我想在该文本中添加工具提示以显示链接。有什么办法可以实现此功能? 问题答案: 好问题。 First Swing支持HTML,因此要显示带有链接的工具提示,您只需说: 问题是使此工具提示可单击。 不幸的是,它不是由Swing本身完成的。 工具提示由ToolTipManager创建。当您

    • 之后我添加工具:替换="android: appComponentFactory在我的Manifest.xml它使发生错误 我只是按照日志给我的建议去做 我已经尝试了从这里开始的所有操作,Android X:tools:replace在第:行为属性指定,但没有指定新值 它向我展示了错误 这是我的Logcat 这是我的舱单

    • lxd如何在容器中提供完整的操作系统功能,而不仅仅是单个进程? 它与lxc/docker包装器有何不同? 它是否类似于一个容器,在一个容器中包含多个进程? 换言之: 在lxc和docker上使用一些包装器做不到的lxd可以做什么

    • LXC

      LXC 项目由一个 Linux 内核补丁和一些 userspace 工具组成。这些 userspace 工具使用由补丁增加的内核新特性,提供一套简化的工具来维护容器。 容器可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。本文循序渐进地介绍容器工具 Linux Containers(LXC)。 容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更

    • 我正在ubuntu 14.04上试验lxc。为了管理几个lxc实例,我使用python3lxc。使用pyhthon3 lxc,我确实无法克隆现有容器: 相应地, /var/lib/lxc.vanilla_clone没有根基使用 很好。(python3和lxc克隆,两者都是从sudo开始的。)这是python3_lxc中的一个bug或限制,还是我遗漏了什么? 事后思考:使用lxc。容器create需