我是虚拟化领域的新手,能有人向我解释一下OpenVZ和Docker之间的区别吗?
哪个在未来更有前途呢?
它们各自的优缺点是什么?
我是虚拟化领域的新手,能有人向我解释一下OpenVZ和Docker之间的区别吗?
哪个在未来更有前途呢?
它们各自的优缺点是什么?
两者对容器的看法完全不同。
简而言之 OpenVZ把容器看作虚拟专用服务器,而docker则把容器视为应用程序/服务。
这意味着什么? 对于OpenVZ,你可以期望创建容器就像制作虚拟服务器一样。 OpenVZ有着重于设置VPS容器的接口,您可以手动修饰它们。因此,他们提供了空Linux机器的模板,您可以启动和关闭它们,随后通过SSH访问它们自己,并按照您需要的方式进行设置,例如LAMP堆栈。
当您想要设置LAMP堆栈时,您将像设置新服务器时那样操作。您将获得一个具有其自己的可公开访问的WAN IP和Ubuntu的虚拟以太网适配器的空Linux机器,并使用SSH访问它,然后使用您平常使用的包管理器(yum或apt)安装所有所需服务,并在配置文件中完成所需的设置。
对于Docker,您可以期望创建的容器是单个应用程序,只执行一个任务。因此,它可能需要其他容器来帮助它。(例如提供数据库的容器) Docker使定义容器内容变得非常容易,而不必实际启动其中任何一个,并且可以不断地创建全新的完全相同容器的实例。他们使用名为Dockerfiles的非常轻巧的模板来定义docker容器(映像)。
已经有大量的dockerfiles可以在Docker Hub中找到,请自行查看(就像免费糖果商店一样!:D):docker hub。通过使用拉取命令,这些dockerfiles生成的映像可以使用docker CLI工具轻松获取。
在docker中还可以轻松访问诸如端口转发,虚拟目录(以便您可以轻松访问主机上的文件)等功能,任何可执行程序都可以使用这些功能。
如果您想在docker中获取LAMP堆栈,则只需运行“docker run -d -p 80:80 tutum/lamp”即可。
这将拉取图像tutum/lamp,并在容器中以端口80向前转发到主机的端口80的守护进程(-d)运行,将内部Web服务暴露给外部。如您所见,与OpenVZ机器相比,它没有自己的IP地址。就像是在根机器上运行的Apache服务器一样。
与本地安装相比,优点是Docker使安装变得更加容易和无限可复制。此外,它不会在主机机器上储存大量文件,并为您的应用程序提供了安全边界。
大多数Docker镜像都有独特的功能,对于tutum/lamp镜像,请看这里。