Docker 是一个开源的应用容器引擎 ,让开发者可以打包他们的应用及依赖环境到一个可移植的容器中,然后发布到任何运行有Docker引擎的机器上。
让大家可以随心所欲地使用软件而又不会深陷到环境配置中。
结构与特性
和Java虚拟机类似,Docker使用容器引擎解决平台依赖问题,它在每台宿主主机上启动一个Docker守护进程,守护进程屏蔽了与具体平台相关的信息
对上层应用提供统一的接口。Docker化的应用就可以在多个平台下运行,Docker会针对不同的平台,解析给不同平台下执行驱动、存储驱动和网络启动
去执行。
Docker采用C/S架构,包含Docker Server和Docker Client。Docker Daemon作为server,在宿主机上以后台守护进程的形式运行。Docker
Client可以在本机上以bin命令形式发送指令,也可以通过RESTful的形式发送指令。
Docker引入了分层概念。
把一个应用分为任意多个层, 如果两个应用有相同的底层,就可以共享这些层。层次是有优先级的,上层和下层有相同的文件和配置时,
上层覆盖下层,数据以上层的数据为准。
每个应用一个优先级最高的空白层,如果要修改下层的文件,就把这个文件拷贝到这个优先级最高的空白层进行修改,保证下层的文件不做任何修改
在Docker的官方仓库里,只需它有完整的文件系统和程序包,没有动态生成新文件的需求;当把它下载到宿主机上运行对外提供服务时,有可能
修改文件,需要有空白层用于写时拷贝。Docker把这两种不同的状态做了区分,分别叫做镜像和容器。
在仓库中的应用都是以镜像的形式存在的,把镜像从Docker仓库下拉到本机,以这个镜像为模板启动应用,叫容器。