docker-machine
docker-machine是解决docker运行环境问题。
docker技术是基于Linux内核的cgroup
技术实现的,那么问题来了,如果在非Linux平台上使用docker技术需要依赖安装Linux系统的虚拟机。
docker-machine就是docker公司官方提出的,用于在各种平台上快速创建具有docker服务的虚拟机的技术。你可以把它理解为virtualbox或者vmware,最开始在win7上用得比较多,但是win10开始自带了hyper-v虚拟机,已经不再需要docker-machine了,docker可以直接运行在安装了Linux系统得hyper-v上。
docker-compose
dcoker-compose主要是解决本地docker容器编排问题。
一般是通过yaml配置文件来使用它,这个yaml文件里能记录多个容器启动的配置信息(镜像、启动命令、端口映射等),最后只需要执行docker-compose
对应的命令就会像执行脚本一样地批量创建和销毁容器。
docker-swarm
docker-swarm是解决多主机多个容器调度部署得问题。
swarm是基于docker平台实现的集群技术,他可以通过几条简单的指令快速的创建一个docker集群,接着在集群的共享网络上部署应用,最终实现分布式的服务。
swarm技术相当不成熟,很多配置功能都无法实现,只能说是个半成品,目前更多的是使用Kubernetes来管理集群和调度容器。
总结
如果你是在非Linux环境下考虑使用docker-compose,当然我更推荐使用hyper-v或者virtualbox;
如果你需要同时操作多个容器,或者希望使用配置文件记录容器启动命令参数,那么推荐使用docker-compose;
如果你需要在多台主机上部署docker容器,并对其进行调度,那么swarm是一种选择,当然更推荐Kubernetes;