我了解PPA,但是Docker对我来说是新的。 在包pipe理方面,Docker和Dockerfiles与Ubuntu的个人包归档(PPA)有什么不同?
软件包和容器映像是分发软件的两种方式,同时避免冲突,尽pipe它们使用完全不同的方法。
软件包是由软件包pipe理器(例如RPM)在Ubuntu的RHEL或APT中安装的文件包 ,它在将文件写入一个文件之前检查以确保多个软件包使用兼容的库,不使用相同的文件名等共享文件系统。 用户可以直接启动程序。
软件包通常来自软件仓库 ,运行软件仓库的人员可以决定哪个软件包可以控制每个文件名,networking端口,系统用户ID等,以及打包哪些版本的程序。 软件包是从规范文件build立的,列出哪些文件应该包括在内。
PPA (私人包装档案)允许个人和小团体发布他们自己的软件包,还没有被接受进入主软件库的软件。
容器是沙盒,其中程序或程序组可以运行,与系统的其余部分隔离。 由于Linux内核对每个进程的命名空间的支持,他们只能访问自己的文件(具有独立的根目录和挂载表),networking接口等(就像更全面的chrootforms一样)。
由于一个容器只能访问自己的文件,因此存在一些图像 ,即形成容器初始状态的文件包。 由于沙箱的原因,不需要与包装相同的协调。 每个容器都包含它需要的特定版本的库。
Docker是一个容器pipe理器:它从指定的映像启动容器,设置它们的networking接口,logging它们的输出等。
它还pipe理图像:可以从Dockerfiles脚本构build它们,然后将它们从Docker Hub (一组(大部分)由用户控制的存储库)上载下载。
这两种方法可以结合使用:可以基于最小的RHEL或Ubuntu映像创build映像,并使用在容器内运行的yum或apt-get在其中安装软件包。
反过来也是可能的:一个包可以安装一个图像,虽然我没有听说过有人这样做。
当然,安装Docker本身最简单的方法是使用包pipe理器 。
同样,像Puppet和Chef这样的configurationpipe理系统仍然有其作用:在内部设置容器,或者控制哪些容器被部署在哪些机器上并将它们连接在一起。