Docker第一篇:概括

本页所涉及到的内容大部分来自《循序渐进学Docker》, 也会加入笔者自己的一些见解。

一、Docker简要概括

1.1 认识Docker

ps:

1.整个docker生态圈类似于Android,有自己的官方镜像库,用户也可以上传自己的image到官方的镜像库。

2.docker有类似于github的的版本控制功能,运行环境可以在多个版本中快速切换,*选择使用版本提供对外服务。

Docker第一篇:概括

summary:

Docker 用来管理软件部署的应用,Docker 把应用打包成一个image,image带有版本控制的功能,应用的每次修改就对应这镜像的一个版本,制作好的镜像可以发布到镜像仓库,分享给别人;也可以直接从镜像仓库下载别人制作好的应用,直接运行。

1.2 Docker 的结构和特性

1.2.1 Docker的组成划分

  1. 组成
  • 从软件的视角来看:Docker是使用Golang写的开源程序,采用C/S架构,包含了Docker Server和Docker Client。

  • 从生态的视角来看:其有Docker仓库和Doker自身的应用程序组成。关系类似于Appstore和iOS操作系统

  • Docker 仓库: https://hub.docker.com/

  • Docker 自身的应用程序指的就是我们安装在linux操作系统上的单机版的程序。

  1. Docker 的C/S架构解释:
  • Docker Daemon作为Server端,在宿主机上以后台守护进程的形式运行。Docker Client使用比较灵活,在本机上以bin命令的形式发送指令,也可以在远端通过api发送指令。Docker 的Server端接受指令并把指令分解为一系列的任务去执行。
  1. 工作流程

Docker第一篇:概括

1.2.2 Docker的存在形式

在Docker的官方仓库中,每个软件都有自己要依赖的操作系统,内核,三方库等。为了统一这些软件的安装部署,不至于使得用户每下载一个包就要下载其他所有的依赖,Docker引入了 分层 的概念。比一个应用拆分成多层,比如操作系统是第一层, 依赖的库和三方软件是第二层,应用的软件包和配置为第三层,如果两个软件有相同的底层,那么就可以实现共享这些层。

Docker第一篇:概括

这又带来一个问题,如果应用A的配置文件修改了,那就会导致应用B的配置也被修改,为了解决这个问题,Docker规定了层次是有优先级的。就类似Python中的继承机制,实现上层覆盖下层。这也是Docker的写时 拷贝策略 。

Docker第一篇:概括

在Docker的官方仓库中,只需要它有完整的文件系统和程序包,下载到宿主机上提供对外的服务时,可能会修改文件,这是产生一个空白层进行写时拷贝。Docker把这两种装态做了区分,分别叫做镜像和容器。

Docker第一篇:概括

在仓库中的应用都是以镜像的形式存在的。把镜像从Docker仓库中下拉到本机,在一个容器类的虚拟机中以这个镜像为模板启动应用,这个虚拟机就叫容器。

tips: 镜像和容器是Docker中最核心的两个概念

1.2.3 Docker版本控制

上面有提到Docker是使用分层的策略,而版本控制也是基于分层的策略实现的。每次镜像的更新,都会新增一层,所以可以实现类似于git一样的机制。


未完待续…