53

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

对未来有什么好处?

优点和缺点?

4

1 回答 1

79

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

简而言之 ,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 图像,请看这里。

于 2015-03-31T12:23:22.747 回答