Docker 和 OpenVZ 的区别

Posted

技术标签:

【中文标题】Docker 和 OpenVZ 的区别【英文标题】:Difference between Docker and OpenVZ 【发布时间】:2015-06-01 00:47:38 【问题描述】:

我是虚拟化世界的新手。有人可以向我解释一下 OpenVZ 和 Docker 之间的区别吗?

什么对未来有好处?

利弊?

【问题讨论】:

没有谁是 openVZ 和 docker 方面的专家。 我会说aucouranton.com/2014/06/13/… 是一个很好的答案:) 【参考方案1】:

两者对容器的看法截然不同。

简而言之 OpenVZ 将容器视为 VPS,而 docker 将容器视为应用程序/服务。

这意味着什么? 对于 OpenVZ,您可以期待在创建容器时,这有点像创建虚拟服务器。 OpenVZ 的界面专注于设置您手动装饰的 VPS 容器。因此,它们为空的 linux 机器提供了模板,您可以启动和关闭这些机器,然后您可以通过 SSH 连接到这些机器,以便您自行设置所需的任何东西,例如 LAMP 堆栈。

当您想要设置 LAMP 堆栈时,您可以像设置新服务器时一样执行此操作。你得到一个空的 linux 机器,它有一个虚拟以太网适配器,它有自己的可公开访问的 WAN IP,上面有 Ubuntu,用 SSH 访问它,然后使用普通的包管理器(yum 或 apt)在其中安装所有必需的服务并执行自己在配置文件中进行设置。

对于 Docker, 您可以预期,当您创建容器时,容器是一个单独的应用程序,它只做一件事。因此,它可能需要一些其他容器来帮助它。 (例如提供数据库的容器) Docker 让定义容器内的内容变得非常容易,而无需实际启动一个容器,并不断创建该容器的新的完全相等的实例。他们使用称为 Dockerfile 的非常轻量级的模板来定义 docker 容器(镜像)的内容。

已经有大量的 dockerfile,你可以在 Docker 中心找到,自己看看(就像在糖果店里有免费的糖果!:D):docker hub。可以使用 docker CLI 工具通过 pull 命令拉取这些 dockerfile 生成的图像。 在 docker 中,还可以轻松访问端口转发、虚拟目录(以便您可以轻松访问主机上的文件)以及任何可执行文件都可以使用的类似内容。

如果您想在 docker 中使用 LAMP 堆栈,您只需执行“docker run -d -p 80:80 tutum/lamp”

这会拉取图像 tutum/lamp,并使用从容器转发到主机的端口 80 的端口 80 运行守护进程 (-d),将内部 Web 服务暴露给外部。如您所见,与 OpenVZ 机器相比,它没有自己的 IP 地址。它就像在您的根计算机上运行的 apache 服务器一样。 与本地安装相比,它的优势在于 docker 使安装更容易且可无限复制。此外,它不会让您的主机因大量文件而杂乱无章,并为您的应用程序提供安全边界。

大多数 docker 镜像中都有很多独特的功能。 tutum/lamp 图片,take a look here.

【讨论】:

非常感谢您的详细回答:)。我几乎没有疑问。考虑一个设置,我需要一个带有两个网卡的 mysql 服务器和 tomcat apache。这可以在 openVZ 中轻松实现,因为它是虚拟服务器,我可以在同一台机器上创建尽可能多的虚拟专用服务器。我将如何实现这个 Docker? 对于那些想了解更多关于 linux 容器和 docker 的人来说,阅读这个***.com/questions/16047306/… 您的设置可以在这两种解决方案中实现。当您选择 docker 时,您只需转发容器化服务的端口,使其看起来好像是从 docker 主机托管的。此外,您可以选择将容器相互链接,这样您就不需要将数据库暴露给网络。我个人会选择 docker,有一个学习曲线,但最终它更容易设置和安装应用程序。我敢打赌,你肯定会在几天内爱上 Docker。 感谢您的输入,您能否给我链接以开始使用。我在某处读到我无法在 docker 中运行 mysql 服务器实例,并且无法从该github.com/docker/docker/issues/1824 获得 2 个以太网接口。是否仍然无法实现这一点。 很好的答案!我要补充一点,OpenVZ 创建了一个没有专用内核的“时髦”虚拟机(具有属性、初始化脚本、文件系统、网络接口、挂载点等物理服务器)。当 docker 启动一堆与主机隔离的服务时,直到你停止它。当你停止一个 docker 容器时,当你的容器的 FS 消失时,不要感到惊讶(虽然有办法持久化,但这不是 docker 的默认意图)

以上是关于Docker 和 OpenVZ 的区别的主要内容,如果未能解决你的问题,请参考以下文章

Docker的“正反”面

docker

docker 基本操作Ⅱ(关于镜像操作)

Docker入门

Dockerfile详解

以Docker为代表的新一代容器技术价值初探