Docker 和 OpenVZ 的区别

Difference between Docker and OpenVZ

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

什么对未来有好处?

优缺点?

两者对容器的看法非常不同。

简而言之 OpenVZ 将容器视为 VPS,而 docker 将容器视为 application/service.

这意味着什么? 对于 OpenVZ 您可以预期,当您创建容器时,它有点像创建虚拟服务器。 OpenVZ 的界面专注于设置您自己手动装饰的 VPS 容器。因此,他们为空 linux 机器提供了模板,您可以启动和关闭这些机器,然后您可以通过 SSH 进入,以根据需要自行设置它们,例如 LAMP 堆栈。

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

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

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

如果您想要 docker 中的 LAMP 堆栈,您只需 "docker run -d -p 80:80 tutum/lamp"

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

大多数 docker 图像中都有许多独特的特征。对于 tutum/lamp 图像,take a look here.