docker-基本概念、架构和使用
Docker是一个开源的容器项目,基于go语言开发。之所以被称为容器技术,是因为docker对进程进行封装,隔离于宿主系统和其它的进程,类似于一个装东西的容器,而且在容器里面装有一系列文件系统、网络、依赖包等应用程序运行需要的环境,开发人员可以快速将他们的应用程序部署到容器内运行。容器技术属于操作系统层面的虚拟化技术,它和虚拟机技术主要的区别如下:
Docker核心概念
容器技术的核心概念有容器(container)、镜像(image)、仓库(registry)三个。
容器:具体的运行应用程序的一个进程,它里面包含应用程序的各种依赖。
镜像:创建容器的模板,根据不同配置的镜像来创建不同的容器使用。镜像和容器的关系可以理解为面向对象中类和实例对象的关系。
仓库:一个镜像只可以创建一种类型的容器,镜像多了就需要放到镜像仓库中存起来,仓库有本地镜像仓库和公共镜像仓库,平时使用本地仓库的镜像,没有的话去Registry hub公共镜像仓库下载。
Docker架构
Docker框架主要由Docker Client、Docker Daemon、Docker Registry、Driver、Docker Container五个模块组成,另外还有Graph和Libcontainer两个辅助模块,如下图所示:
Docker Client: 用户通过Docker Client与Docker Daemon进行通信,利用命令行发送创建镜像、运行容器之类的请求。
Docker Daemon:Docker Daemon是Docker架构中一个常驻在后台的系统进程,接受并处理Docker Client发送的请求。该守护进程在后台启动了一个Server,Server负责接受Docker Client发送的请求;然后通过路由与分发调度,找到相应的Handler来执行请求。
Docker Registry:存储容器镜像的仓库。
Driver: Driver是Docker架构中的驱动模块。通过Driver驱动,Docker可以实现对Docker容器执行环境的定制。包含管理容器镜像的graphdriver驱动,配置容器内网络环境的networkdriver驱动,execdriver用来创建和维护容器。
Docker Container:运行应用程序的特定容器,是容器服务的交付实体。