docker和docker-compose有什么不同?

dockerdocker-compose似乎与相同的docker文件相互作用,这两个工具之间有什么区别?

在Docker引擎上pipe理单个容器时使用docker cli。 这是访问docker守护进程api的客户端命令行。

docker-compose cli可用于pipe理多容器应用程序。 它还将docker-compose.yml许多选项移到docker-compose.yml文件中,以便于重复使用。 它作为一个前端“脚本”在docker使用相同的dockerAPI的顶部,所以你可以做所有的docker-compose docker命令和大量的shell脚本。 有关更多详细信息,请参阅docker-compose上的此文档 。


更新群模式

由于这个答案已经发布,docker已经添加了第二次使用docker-compose.yml文件。 从版本3的yml格式和docker 1.13开始,你可以使用docker-compose的yml,也可以在docker的swarm模式下定义一个堆栈。 要做后者,你需要使用docker stack deploy -c docker-compose.yml $stack_name而不是docker stack deploy -c docker-compose.yml $stack_name docker-compose up ,然后用docker命令而不是docker stack deploy -c docker-compose.yml $stack_name docker-compose up命令来pipe理堆栈。 这两种用途之间的映射是一对一的:

  • 撰写项目 – > Swarm Stack:用于特定目的的一组服务
  • 撰写服务 – >群集服务:一个图像,它的configuration,可能放大。
  • 撰写容器 – >群集任务:服务中的单个容器

有关swarm模式的更多细节,请参阅docker的swarm模式文档 。