Docker平台

Docker是一个用于开发(developing),交付(shipping)和运行应用程序(running applications)的开放平台。 Docker将应用程序与基础架构分开,从而可以快速交付软件(deliver software quickly)。借助Docker,可以用与管理应用程序相同的方式来管理基础架构。我理解的是,开发环境移植性很好。通过利用Docker的管理方法(methodologies)来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

Docker引擎

Docker Engine是客户端服务的应用程序,包括以下这些组件
daemon process 服务器是一类长时间运行的程序,称作守护进程(daemon process)
A REST API 指定了程序可以用来与守护进程进行对话并指示其操作的接口
CLI 命令行界面客户端
命令行界面使用脚本或直接的命令使用API来控制Docker的守护程序或与之交互,可以实现创建和管理Docker的对象,如镜像,容器,网络和卷。
图片说明

Docker架构

图片说明
Docker使用客户机-服务器(client-sever)架构。通常服务器用于数据的管理,客户机用于完成与用户的交互任务。首先客户机与守护进程对话,守护进程再执行构建、运行和分发Docker容器的工作。Docker客户机和守护进程可以在同一系统上运行,也可以远程连接。两者在UNIX sockets或网络接口上使用Rest API来进行通信。

Docker 注册表(registries)

Docker注册表存储Docker镜像,其中Docker hub是任何人都可以访问的公用注册表。并且默认情况下,Docker是在Docker hub上查找镜像。使用docker pulldocker run可以把所需要的镜像从注册表中提取出来。使用docker push命令可以把镜像推送到配置的注册表。

Docker对象

Docker镜像

一个镜像是一个只读的template,包含了创建Docker容器的说明。通常一个镜像是基于另一个镜像的,再加一些自定义的内容。例如,你可以创建一个基于ubuntu镜像的镜像,里面安装了一些Apache web server和你自己的应用程序,以及运行应用程序所需的配置。
想要创建自己的镜像,可以通过一些简单的语法来创建Docker file,定义创建及运行的步骤。Docker file中每一个指令都创建了一个镜像层,当修改指令并重建镜像时仅仅修改对应的层即可,这就是Docker如此轻量化、快速的原因

Docker容器

容器是镜像运行的实例,可以使用Docker API来执行创建,启动,终止,移动和删除容器操作。
默认情况下,容器与容器还有主机之间隔离程度较高,当然这种隔离程度是可以进行控制的。
docker run命令
运行Ubuntu容器,添加交互到本地命令行会话,并运行bash
docker run -i -t ubuntu /bin/bash
当执行了这段代码后
1.Docker首先检查本地是否有ubuntu镜像,若没有则从注册表中pull一个,即替你执行了docker pull unbuntu
2.Docker创建一个新的容器,替你执行了docker container create命令
3.Docker分配给容器一个读写文件系统作为最后一层,这允许运行中的容器在本地文件系统中创建修改文件和目录
4.Docker创建一个网络接口,没有指定网络选项时会将容器连接到默认网络。默认情况下容器使用主机的ip连接到外部网络
5.Docker启动容器,并运行bash
6.当键入exit终止bash时,该容器将停止而不会被删除。可以选择重新启动或者删除它