docker系列(二)之docker介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao__zhen/article/details/88344235

docker是什么

Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。

Linux容器技术的出现就解决了这样一个问题,而Docker就是在它的基础上发展过来的。将应用运行在Docker容器上面,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

docker的优点

  • 更轻量:基于容器的虚拟化,仅包含业务运行所得的runtime环境,CentOS/Ubuntu基础镜像仅170M;宿主机可部器100~1000个容器
  • 更高效:无操作系统虚拟化开销
  • 计算:轻量,无部外开销
  • 存蜡:数据盘volurme
  • 网格:寄主机同络,NS际离
  • 更敏捷、更灵活:
  • 分群的存储和包管理,daevop罐念
  • 支持多种策略配置

docker的应用场景

容器技术的诞生其实主要解决了PAAS的层的技术实现。像OpenStack、Cloudstack这样的技术是解决IAAS层的问题。IAAS层和PAAS层大家估计也听得很多了,关于他们的区别和特性我这里不在描述。那么容器技术主要应用在哪些场景呢?目前主流的有以下几种:

  1. 容器化传统应用 容器不仅能提高现有应用的安全性和可移植性,还能节约成本。
    每个企业的环境中都有一套较旧的应用来服务于客户或自动执行业务流程。即使是大规模的单体应用,通过容器隔离的增强安全性、以及可移植性特点,也能从 Docker 中获益,从而降低成本。一旦容器化之后,这些应用可以扩展额外的服务或者转变到微服务架构之上。

  2. 持续集成和持续部署 (CI/CD) 通过 Docker 加速应用管道自动化和应用部署,交付速度提高至少 1 倍。
    现代化开发流程快速、持续且具备自动执行能力,最终目标是开发出更加可靠的软件。通过持续集成 (CI) 和持续部署 (CD),每次开发人员签入代码并顺利测试之后,IT 团队都能够集成新代码。作为开发运维方法的基础,CI/CD 创造了一种实时反馈回路机制,持续地传输小型迭代更改,从而加速更改,提高质量。CI 环境通常是完全自动化的,通过 git 推送命令触发测试,测试成功时自动构建新镜像,然后推送到 Docker 镜像库。通过后续的自动化和脚本,可以将新镜像的容器部署到预演环境,从而进行进一步测试。

  3. 微服务 加速应用架构现代化进程。
    应用架构正在从采用瀑布模型开发法的单体代码库转变为独立开发和部署的松耦合服务。成千上万个这样的服务相互连接就形成了应用。Docker 允许开发人员选择最适合于每种服务的工具或技术栈,隔离服务以消除任何潜在的冲突,从而避免“地狱式的矩阵依赖”。这些容器可以独立于应用的其他服务组件,轻松地共享、部署、更新和瞬间扩展。Docker 的端到端安全功能让团队能够构建和运行最低权限的微服务模型,服务所需的资源(其他应用、涉密信息、计算资源等)会适时被创建并被访问。

  4. IT 基础设施优化 充分利用基础设施,节省资金。
    Docker 和容器有助于优化 IT 基础设施的利用率和成本。优化不仅仅是指削减成本,还能确保在适当的时间有效地使用适当的资源。容器是一种轻量级的打包和隔离应用工作负载的方法,所以 Docker 允许在同一物理或虚拟服务器上毫不冲突地运行多项工作负载。企业可以整合数据中心,将并购而来的IT资源进行整合,从而获得向云端的可迁移性,同时减少操作系统和服务器的维护工作。

docker 三要素

  1. 镜像
    Docker镜像(image)就是一个只读模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。

  2. 容器
    docker 利用容器(container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

    可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

  3. 仓库

  • 仓库(Repository)是集中存放镜像文件的场所。
  • 仓库(Repository)和仓库注册服务器(Registry)是有区别的。创库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像每个镜像有不同的标签(tag)。
  • 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
  • 最大的公开仓库是Docker Hub(https:/hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等

docker架构

总结
Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎image镜像文件。只有通过这个镜像文件才能生成Docker容器。image文件可以看作是容器的模板。Docker 根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。

  • image文件生成的容器实例,本身也是一个文件,称为镜像文件。
  • 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器
  • 至于仓储,就是放了一堆镜像的地方,我们可以把镜像发布到仓储中,需要的时候从仓储中拉下来就可以了。

Kubernetes(简介)

Kubernetes (k8s) 是自动化容器操作的开源平台, 这些操作包括部署, 调度和节点集群间扩展。如果曾经用过Docker容器技术部署容器, 那么可以将Docker 看成Kubernetes 内部使用的低级别组件。Kubernetes 不仅仅支持Docker, 还支持Rocket, 这是另一种容器技术.

Kuberenetes 是典型的Master-Slave 架构, 其中包括如下这些关键组件: ( 1) Cluster: Kubernetes 维护一个集群,Docker 的containers 都运行其上。并且, 这个集群可以运维在任何云及Bare Metal 物理机上。(2) Master: Master 节点包含apiserver, controller -manager, sheduler 等核心组件。( 3)Node: Kubernetes 采用Master -Slaves 方式部署, 单独一台Slave 机器称为一个Node。(4) Pods: Kubernetes 最小管理单位, 用于控制创建、重启、伸缩一组功能相近, 共享磁盘的Docker 容器。虽然Pod 可以单独创建使用, 但是推荐通过Replication Controller 管理。(5) Replication controllers (RC):管理其下控制的Pods 的生命周期, 保证指定数量的Pods 正常运行。(6) Service: 可用作服务发现, 类似于Loadbalancer,通过Selectors 为一组Pods 提供对外的接口。(7) Labels: K/V键值对, 用来标记Kubernetes 组件的类别关系Labels 对于Kubernetes的伸缩调度非常重要。

近两年来比较火的容器云技术,大部分都是以Kubernetes架构为主的。容器云的目标决定了我们面对的是应用的管理,即应用对应的docker容器的管理,这就要求我们要以Kubernetes为中心构建容器云,而不是以docker为中心。Docker只作为应用打包、传递、运行时的工具,所有的API都要面向Kubernetes进行设计。

猜你喜欢

转载自blog.csdn.net/zhao__zhen/article/details/88344235