docker初探
- 什么是docke
- 使用go语言进行开发,基于linux内核的,对进程进行隔离封装,属于操作系统层面的虚拟化技术。
- docker和传统虚拟化有什么区别(有无进行硬件的虚拟化)
- 传统的虚拟化技术是虚拟出一套硬件后在其上运行一个完整的操作系统,在该系统上在运行相应的进程;
- 容器则是容器内的应用进程直接运行在宿主的内核中,容器没有自己的内核,也没有进行硬件的虚拟化。
- 为啥要使用docker
- 更高效的利用系统资源
- 更快速的启动时间
- 一致的运行环境
- 持续交付和部署
- 更轻松的维护和拓展
- docker的基本概念
- 镜像(images)
- 相当于一个root文件系统,提供容器运行时所需的程序、库、资源、配置文件之外,还提供一些为运行时准备的配置参数,且不包含任何动态数据,其内容在构建之后也不会改变。
- 分层存储:(减少冗余量)Union FS技术,分层构建,前一层是后一层的基础,每一层构建完后就不会发生改变,后一层上的任何改变只发生在自己这一层。
- 容器(container)
- 镜像是静态的定义,容器则是镜像运行时的实体。可以被创建、启动、停止、删除、暂停等。
- 容器的实质是进程,且属于自己独立的命名空间(一套独立的root文件系统,网络配置,进程空间,用户ID空间)。
- 容器存储层(无状态化):
- 定义:每个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层(为容器运行时读写而准备的);
- 生命周期:同容器相同,因此保存在容器存储层的信息都会随容器的删除而丢失(存入数据卷中或绑定宿主目录)。
- 数据卷(Volume):
- 数据存储地
- 生命周期独立于容器。
- 仓库(Repositry)
- Docker Registry
- 集中存储、分发镜像的服务。
- 定义:每个Docker Registry中可以有多个仓库(Repository);每个仓库可以有多个标签(Tag);每个标签对应一个镜像;
- 通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给 出标签,将以 latest 作为默认标签。
- Docker Registry
- 镜像(images)