目录
docker简介
1.什么是docker
2.基本结构
3.docker优势
4.docker改变了什么
5.docker三大基本概念
1.docker镜像
2.容器
3.仓库
docker简介
1.什么是docker
Docker 是一个开源项目, 诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议, 项目代码 在 GitHub 上进行维护。 Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。 Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。Docker 项目的 目标是实现轻量级的操作系统虚拟化解决方案。
Docker 的基础是 Linux容器( LXC)技术。在 LXC的基 础上 Docker 进行了进一步的封装, 让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的 容器。开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
简单的理解,Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装 箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应 用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而 且非常易于装载、复制、移除,非常适合软件弹性架构。
2.基本结构
3.docker优势
1、 更快速的交付和部署 对开发和运维( devops)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。 开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后, 运维人员可以直接使用这个 容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团 队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker容器很轻很快! 容器的启动时间是秒级的,大量地节约开发、 测试、部署的时间。
2、更高效的虚拟化 Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此是可以实现更高的性 能和效率。
3、更轻松的迁移和扩展 Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、 服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
4、更简单的管理 使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式 特性 容器 虚拟机 启动 秒级 分钟级 硬盘使用 一般为 MB 一般为 GB 性能 接近原生 弱于 系统支持量 单机支持上千个容器 一般几十个 被分发和更新,从而实现自动化并且高效的管理。
4.docker改变了什么
- Docker改变了云服务,使云服务的共融共通的理想逐步成为了可能。并且Docker 已经是云策略的 一部分,许多开发者正在计划使用 Docker 将业务迁移到云端。另外,为了避免被云服务供应商绑 定,Docker成为很多开发者的首选。
- Docker改变了产品交付,为产品的整个生命周期提供了一整套的解决方案和流程。
- Docker改变了开发方式,提供了简化的环境配置、封装的运行环境以及统一的环境。并且提供了快 速部署的方式。
- Docker改变了测试,多版本测试变得极为方便,快速构建测试环境也变得更加简单并且无需开发人 员干预或者搭建。
- Docker改变了运维,环境的一致性让运维变得更加简单,同时热更新的支持让运维不再需要半夜加 班部署更新,更新可以随时进行。当出现重大问题时,还能快速回滚到指定版本。 Docker改变了架构,自动化扩容支持让架构变得更加简单,分布式系统也更加易于搭建和支持。同 时遗留的单体应用也很易于转变为现代应用。
5.docker三大基本概念
1.docker镜像
docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包 含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据, 其内容在构建之后也不会被改变。
2.容器
容器:镜像运行时的实体,Docker利用容器来运行应用。 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态 的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。 容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。
因此容器可以拥有自己的 root 文件系统、 自己的网络配置、 自己的进程空间, 甚至自己的用户 ID 空 间。 容器内的进程是运行在一个隔离的环境里, 使用起来, 就好像是在一个独立于宿主的系统下操作 一样。 这种特性使得容器封装的应用比直接在宿主运行更加安全。 也因为这种隔离的特性, 很多人初 学 Docker 时常常会混淆容器和虚拟机。
3.仓库
仓库:集中存放镜像文件的地方 镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其他服务器上使用这个镜像,我 们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个 标签对应一个镜像。 所以说,镜像仓库是 Docker 用来集中存放镜像文件的地方,类似于我们之前常用的代码仓库。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。 我们可以通过:的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 以 Ubuntu 镜像 为例, ubuntu 是仓库的名字, 其内包含有不同的版本标签, 如, 14.04 ,16.04 。
我们可以通过 ubuntu:14.04 , 或者 ubuntu:16.04 来具体指定所需哪个版本的镜像。 如果忽略了标签, 比如 ubuntu , 那将视为 ubuntu:latest 。仓库名经常以两段式路径形式出现, 比如 jwilder/nginxproxy , 前者往往意味着 Docker Registry 多用户环境下的用户名, 后者则往往是对应的软件名。 但这 并非绝对, 取决于所使用的具体 Docker Registry 的软件或服务。
仓库分为公开仓库( Public)和私有仓库( Private) 两种形式,即Docker Registry 公开服务和私有 Docker Registry 。