Docker bundles和docker-compose有什么不同?

28

Docker 1.12 引入了捆绑(bundle)的新概念,这是一种描述服务集合的新文件格式。

我的应用程序已经使用 docker-compose 部署。我有一个 docker-compose.yml 文件为每个环境,只需运行 docker-compose up 即可快速部署我的应用程序。

从我理解的这篇文章中得知,Docker bundles 是内置在 Docker 中的一种新方法,与作为外部软件的 docker-compose 执行相同的功能。

就是这样?使用 Docker bundles 能带来什么样的好处,而 docker-compose 没有呢?


4
好问题,我不觉得任何答案都回答得很好。我仍然不知道DAB相比docker-compose有哪些优势。 - Roddy
3个回答

16
可以构建成一个镜像,然后可以从该镜像创建容器。
同样地,可以构建成分布式应用程序包(DAB),然后可以从该包创建堆栈。
因此,该包是一种多服务可分发的镜像格式。
来源:https://docs.docker.com/v18.03/compose/bundles/

所有的Docker镜像等都将成为DAB本身的一部分...您不必从网络上下载这些镜像文件。 - Harish Ambady
真的吗?我认为dab文件是一个包含创建服务指令的json文件。 - burtsevyg
我使用 "docker-compose bundle" 创建了一个捆绑包,但是在我的目录中只得到了一个文本文件。这样正确吗? - burtsevyg
我已经转移到Kubernetes一段时间了,完全忘记了DAB是什么。你说得对,DAB只是一个JSON文件。根据他们的旧路线图(https://github.com/moby/moby/issues/26876),DAB被引入作为bundles的前身。DAB是用于内部表示bundle的文件格式,而bundle将包含其中的所有内容,并且它将是一个二进制文件。 - Harish Ambady

3
主要区别在于docker bundle旨在与新的服务器端编排功能一起使用,它使用docker服务内部流程。而docker compose的所有逻辑都是客户端(compose)处理不同的请求到服务器(守护程序)。对于docker bundle来说,所有的流程都由引擎管理。

感谢您对这两者之间基本差异的解释。您能否详细阐述一下Docker bundles相对于docker-compose的优势?这是否意味着docker-compose的终结?在什么情况下使用其中一个比另一个更合适? - dynamic_cast
1
抱歉,目前我对Compose的未来没有清晰的想法。我的当前想法是,Dab可以专门用于规模和编排,因为服务API目前仅在Swarm模式下工作,Compose将成为堆栈的一部分,但仅用于本地和开发使用。目前这是我的想法,但我希望在未来几天内能够改进它。 - GianArb

0

目前与docker-compose相比,DAB中有一些功能不可用,例如链接和卷挂载。在compose文件中映射的主机端口到容器端口没有任何关联,因为Swarm会随机分配一个端口给服务。您可以通过以下方式验证:

docker service inspect nginx

当然,您可以随时更新服务的端口,例如

docker service update --publish-add 8080:80 nginx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接