Docker基础-1-Docker概述

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

        新写一个系列的学习笔记,介绍Docker如何入门到基本掌握。在现在的软件行业,如果你没有使用过Docker,那没关系,如果你连听说过都没有,那就是你有问题了。Docker太火了,从2013年到现在,你没有听说过,说明你对行业动态一点都不了解。本系列文章,我会根据我在Docker官网的文档和相关视频教程,以及我少量的工作相关经验来描述,什么是Docker,如何学习Docker,完整的跟下来,可以做到从零到基本掌握Docker基础。

Docker官网文档地址:https://docs.docker.com/get-started/

 

Docker的基本概念

        Docker是一个能给开发人员和系统管理人员提供在容器内 开发、部署、运行 软件程序的一个平台。当然Docker是一家软件公司的一个商业产品,有免费版和企业付费版本,后面文章会详细介绍。

       上面提到了容器这个概念,初学者,完全可以认为,Docker就是容器,本系列文章,大部分情况下,提到的容器就是指Docker, 在目前中软件行业中,使用到容器的技术,主要有两个大产品,一个是Docker,另外一个是谷歌的kubernetes,简称k8s,数字8表示中间省略了8个字母。K8s是一个容器编排工具,非常强大。

       使用linux容器去部署应用程序的方式叫做容器化技术。下面我们来解释下容器化和虚拟化之间的对比。

 

虚拟化VS容器化

        在很早以前,我们要部署一个软件,需要去买一台服务器,例如IBM或者Sun公司的服务器 ,然后在服务器上安装系统,配置网络,选择内存,然后开始部署相关应用软件。在虚拟化技术出来之前,很多IT基础设施就是这么玩转的。后来,软件的迁移和扩展变得很困难,例如要加内存,这个还好解决,有些甚至要新买服务器,甚至更换服务器。下面这张图,就来介绍下虚拟化和我们当今的容器化技术的特点和对比。

上面这张图来自Docker官网,左边是容器技术,右边是虚拟化技术。

        我们先来了解下右边的虚拟化技术原理。虚拟化,你们可能使用过VMware公司的workstation 或者Mac端的Fusion, 还有一个叫思杰(Citrix),这家美国公司在南京有分公司,也是做虚拟化方面的产品。

        最底层的Infrastructure,是基础设施,例如机房中大型物理服务器,网络,硬盘和内存资源。这些叫基础架构。基础架构上面一层Hypervisor,即虚拟化层。这一层,拿VMware公司的产品ESXi来说,就是一个安装在物理服务器上的虚拟化操作系统。安装了这个虚拟化操作系统,可以在这个物理主机上创建多个虚拟机。Workstation就是我们个人机器上的一个客户端产品,对应到大型服务器上,就要买VMware的ESXi主机管理系统。以上图来看,安装了三个虚拟操作系统。没一个vm都单独互相隔离,它们有自己的操作系统,和CPU 内存等资源,然后部署不同的应用程序。这种应用场景,在VMware公司的产品里,随处可见。例如一个vSphere center产品,其实就是一个linux虚拟机模板,里面有安装好的内嵌数据库和suse Linux操作系统还有vSPhere center这个软件。这种软件,只需要导入到用户的环境中,开机启动,相应的软件服务就起来了只需要简单的配置,这个软件就能用。

       有了上面虚拟化的了解,再来看看左边容器化技术。容器化技术就是在原来操作系统之上,安装了一层Docker服务。这里Docker服务不是一个系统,只是一个软件。Docker运行在操作系统上的一个进程。在Docker层之上的是三个Container, 这三个容器内部单独运行自己的应用程序,也互相隔离。容器和虚拟化操作系统对比,容器更小巧,更方便。容器有一个特点,做好了镜像文件,可以在其他任何系统上,前提是安装了docker软件上跑起来。镜像这个概念,我们后续文章介绍。

 

Docker能做什么

我们为什么要学习Docker,Docker为什么能成为这么一门火爆的技术。先来看看Docker能干什么。

  • 简化配置
  • 整合服务器
  • 代码流水线管理
  • 调试能力
  • 提高开发效率
  • 多租户
  • 隔离应用
  • 快速部署

这里简单介绍几个特点:

1 简化配置

Docker能实现从源代码到配置都打包成一个容器,所以简化了很多配置。

2.提高开发效率

配置简化当然就提高了开发效率。Docker还有一个特点就是可以做到测试环境,准生产环境和线上环境几乎保持一样的环境和配置。这个极大减少了开发调试错误和解决问题的效率。

3.隔离应用

多个应用可以放在不同的容器中隔离开来,每一个容器互不干扰其他容器内部的应用。

4.快速部署

原来的运维人员需要配置很多在线上环境,现在部署软件,就是把所有数据打包成容器,把容器下载启动和简单配置就可以快速完成部署。

其他的特点,我们后续慢慢学习,有些可以覆盖和了解到。

 

Docker VS Kubernetes

 

       在容器时代,这两个容器拳头技术产品不得不了解。Docker能实现创建镜像,管理容器和容器编排。而K8s主要强大功能就是容器的编排管理和操作。作为初学者,你大概这么去理解就可以:学习Docker是了解容器化技术的基础,虽然Docker也有容器编排的技术,后面我们会讲到,但是为什么还要学习K8s呢。在这些大公司,生产环境,成千上万个容器管理,基本上都是采用k8s的基本框架,加上自己的研发工具。K8s是生产环境上大规模集群的首选技术方案,我们这个系列会提到k8s,基本上不会去学习。要学习也是放在Docker基础学习之后。

上面提到的容器编排就是对容器的创建、管理、调度。运维等操作。最后,总结一句话,Docker是容器技术的一种实现。市场还有其他产品也实现了容器技术,只不过Docker是里面优秀的之一。就好像我前面写的CI和CD平台中最火的软件是Jenkins,一样道理。

 

 

猜你喜欢

转载自blog.csdn.net/u011541946/article/details/86365676