docker工具链概述
本文主要介绍docker是什么,有什么,以及工具链的概述。
docker是一个比较新容器技术,当然容器技术并不是什么新技术,如果你没有接触过容器的概念,可能你有种一夜之间容器遍天下的感觉。 我最早接触docker也是2015前后,一次偶然的机会去尝试cloud foundry,便得知了容器是何物,遇见docker后甚是喜爱,因为工作环境一直不得尝试,所以一直不能深入的去研究它,今天的docker与几年前相比已经有了很大的变化,各种工具链都相对完善,技术也相对成熟,随着微服务的诞生,docker的应用场景更是被发挥的淋漓尽致,如果你没有赶上又丑又庞大的企业级应用,那么此刻短小精悍的微服务时代你可以尽情体验一番。
docker名词解释
- docker官方解释为docker引擎,一个集client与server一身的容器技术。
- docker镜像,比如一个系统iso文件,通常被叫做镜像,它只是一个静态文件而已。
- docker容器,当一个iso文件被安装硬盘上后就成一个系统,你可以将这个iso安装到多个硬盘上,那么每个系统就对应着docker容器的概念,或者你也可以理解成实例,容器(实例)是动态的而镜像是静态的。
docker简介
- docker是一个容器化技术,用来管理容器,那么作为容器,它可以容纳一个或多个程序。
- docker容器是一个独立程序,什么叫独立的程序,它可以打包你的程序并与系统内的其它程序之间隔离,隔离边界就是docker容器本身。
- docker容器是一个可以执行的完整的整体,创建docker容器的时候,docker会打包你在容器内要运行的程序以及程序的所有依赖(当然这不是自动的,docker需要你明确指出你的程序依赖什么)。
- docker容器是一个跨平台应用,docker容器可以运行在unix/linux/win等平台(但是win容器与unix/linux不兼容,docker最初只支持linux内核),docker容器不依赖你的当前系统,只依赖docker引擎本身(docker引擎是docker的简称)。
docker-machine简介
- docker-machine用来创建docker运行环境,你可以使用docker-machine创建基于的docker运行环境,这里的驱动是指多种虚拟机环境,比如:virtualbox,vm,hyper-v等,更多驱动类型在这里。
- docker-machine用来管理docker运行环境,如果你在上一步中创建了多种驱动类型的docker运行环境,那么docker-machine可以来管理这些docker运行环境,比如查看环境信息,比如删除、修改环境,比如在指定的docker运行环境中执行shell命令等。
docker-compose简介
docker-compose主要用来创建docker容器,可能你要问,既然docker可以创建容器为什么还要docker-compose呢?
举个例子:使用shell命令创建一个文件夹,并在文件夹内创建一个文件,只需要执行两条shell命令即可,如果让你在另外的很多机器上也做同样的操作呢?难道你要每个机器都手动输入命令吗?答案是否定的,你肯定想到的是使用shell脚本解决问题,将创建文件夹和创建文件的命令写入脚本中并将脚本分发到不同的机器上运行。没错docker-compose就是用来干这个的,你可以将需要创建的一个或多个容器写入一个docker-compose支持的脚本中。
其实docker-compose支持的是一个yml扩展的文件,这里记录了你要创建的一个或多个容器的配置信息,这样就可以将yml文件分发到不同的机器上并通过docker-compoe创建容器。
docker swarm简介
docker swarm用来管理docker集群,当我们来部署一个服务的时候,我们通常会考虑服务会不会因为特殊情况终止运行,为了避免特殊情况导致的服务终止,通常一个常用的办法就是监控,如果服务意外终止我们就重新启动它,这也是docker swarm要做的事,除此之外docker swarm还会将服务部署到任意一集群节点中,保证服务始终可用。
docker service简介
docker service用来创建docker服务,那么什么是docker 服务,假如你要部署一个docker容器,你通常可以运行docker run命令,如果此时在一个docker集群中,那么该命令只会在运行命令的机器上创建一个容器,如果你要部署的是docker容器的多个实例,那么docker service就是来解决这个问题的,你只需要通过docker service run命令就可以在集群的任意节点上部署你的容器实例,你也可以指定需要运行的容器实例个数,这通常只需设置指定的参数就行了。
docker stack简介
此时,我还不是特别明白docker stack的作用,从官网的介绍我理解为docker compose
+ docker swarm
,这个解释似乎有点牵强,暂时先这么理解吧,毕竟docker stack在docker swarm环境下才有意义,以后理解了在更新这段简介。
总结
docker中的一些工具及感念大概也就这么多,这里只是简单的介绍了一下,如果你是新手那么这篇文章一定对你有很多的帮助,因为我也是这么走过来的,不期望自己的文章多高深,只希望能你让你快速的理解docker是什么。
回顾一下:
docker是一个集client与server一身的容器化技术,你可以通过docker命令来创建一些docker容器,你也可通过docker compose命令来批量创建一些docker容器,如果你的环境足够大,那么docker swarm可以让你对docker的管理更加方便,docker service可以让你创建可靠的服务实例,docker stack可以让你更方便的部署docker容器。