【Docker学习】一、Docker概述

一、Docker概述

(一)Docker出现原因

1.开发和运维存在着矛盾:
  • 开发完成修改后,出现“在我的电脑上可以运行,其他人未知”
2.部署环境费时费力
  • 代码 or 程序可以是跨平台的,但环境是不跨平台的,需要配置环境
  • 同一台机子上的不同服务所安装的环境可能存在冲突
3.部署环境
  • 传统方法解决以上问题:开发者提供jar包,运维进行部署
  • 解决思路:开发、打包、部署一套流程做完
4.Docker解决思路
  • 举例说明
    |例子|任务|操作一|操作二|操作三|
    |–|--|–|--|–|
    |产品发布|app发布|提交至软件商店|用户下载|用户使用|
    |Docker部署|配置项目&环境|上传至Docker仓库|开发者下载发布的镜像|开发者使用|

  • 采用类似“集装箱”的技术

  1. 传统环境配置相互之间会产生影响,导致出现冲突
  2. 采用“集装箱”技术,即采用Docker容器技术,能够将每个项目打包,是项目配置相互“隔离”

(二)Docker的发展历史

  • dotCloud:做一些pass的云计算服务
  • 2013:dotCloud开源处理 -> Docker的优点得到了众多的关注
  • 2014:Docker1.0发布
  • 至今:Docker已成为部署开发环境的首选

(三)Docker的特点

  • Docker容器技术是一种虚拟化技术
  • 使用“容器进行虚拟”相比较使用笨重的虚拟机,显得特别轻巧(占用存储空间小,启动速度快)

(四)Docker简单介绍

  • Docker官网:docker.com
  • Docker文档信息
    【Docker学习】一、Docker概述
  • Docker Hub官网:Ducker Hub
  • 类似于git 和github,我们也可以使用docker命令和dockerhub进行镜像的发布和下载

(五)Docker的用途

1.容器化虚拟技术和虚拟机的差别
  • 虚拟机技术
    【Docker学习】一、Docker概述
  • 容器化技术
    【Docker学习】一、Docker概述
  • Docker能干什么
    |带环境虚拟化技术|原理(操作)|特点|备注|区别|
    |–|--|–|--|–|
    |虚拟机|模拟完整的硬件和操作系统后安装和云溪行软件|虚拟硬件和软件信息|占用过多资源,冗余步骤相当多,开机速度较慢|安装的环境会相互影响|
    |容器化技术|不需要模拟完整的操作系统|直接运行在宿主机内核上|充分利用服务器资源,不需要虚拟硬件,较为轻便|每个容器内都有一个属于自己的文件系统,互不影响|
2.DevOps(开发、运维)
  • 应用更快的交付和部署
  1. 传统发布方式:一堆帮助文档和安装程序
  2. Docker:打包镜像发布测试,一键运行
  • 更简便的升级和扩缩容
  1. 使用Docker之后,我们部署应用就和搭积木一样
  • 更简单的系统运维
  1. 在容器化,开发、测试环境都是高度一致的
  • 更高效的计算资源利用
  1. 容器化技术是内核级别的虚拟化,因此可以极致地利用物理机(服务器)资源