docker engine
平常说的docker一般就是值docker engine,是由cli及守护程序等组成的一整个docker应用程序,简单类比为电脑上装的QQ、浏览器等软件
docker machine
用于管理多台安装有docker engine的主机,比如我有十台电脑,我就可以通过docker machine同时配置和管理这十台电脑上的docker。或者也可以用它创建虚拟机(在虚拟机软件上创建,例如VirtualBox)然后进行管理
docker compose
用于组织和编排单台主机上的docker容器,比如我希望创建一个服务,该服务包含一个nginx的docker容器,一个service的docker容器和一个mysql的docker容器。
- 不用docker compose时的做法:
- 创建网络
- 编写service端dockerfile、创建镜像、配置网络。。。
- 拉取nginx、mysql镜像、修改配置、暴露端口。。。
- 运行容器
- 使用docker compose的做法
- 编写docker-compose.yml
# 不代表真实配置形式,仅便于理解 ... network:... services: nginx:... service:... mysql... ...
- 运行
docker-compose up -d
命令即可
- 编写docker-compose.yml
docker swarm
将多台装有docker的主机组合成一个docker集群,并将该集群抽象成单个docker主机,所有对该抽象主机的操作都将同步到集群中各个主机上,且会对该集群的主机进行集群管理,例如容灾处理等
并且通过创建overlay网络使得集群中各主机间能正常通信
- overlay网络
不同于bridge只能单主机间容器的通信,它是一种逻辑网络,即在各主机的docker容器之间建立一种虚拟网络实现通信。
与docker machine的区别
可以简单理解为docker machine是对主机上的docker engine进行管理,docker swarm则是对docker中运行的服务进行管理。类比于一个网吧,网吧老板负责机器的采购升级等,而网管则负责将这些电脑连成一个网络并维护该网络
组合使用案例
- 使用docker-machine给多台机器安装和配置docker engine
- 使用docker-swarm将这些机器汇聚在一起,形成一个虚拟的单一的docker节点
- 使用docker-compose编排好你项目所需要的服务,并通过docker-swarm部署到虚拟节点上即可