🐳Docker简介

一.为何要有Docker

1.一个软件从开发到部署的问题 : 运行环境和配置python

2.软件是否能够带环境安装 : 安装时将开发的环境如出一辙的复制过来docker

一款产品从开发到上线,从操做系统,到运行环境,再到应用配置
做为开发 + 运维之间的协做咱们须要关心不少东西,这也是不少互联网公司都不得不面对的问题
特别是各类版本的迭代以后,不一样版本环境的兼容,对运维人员都是考验
"Docker"之因此发展如此迅速,也是由于它对此给出了一个标准化的解决方案

二.什么是Docker

  • 基于 Go 语言实现的云开源项目
  • docker是一个开源的软件部署解决方案
🎅示例1
你在金鱼店的鱼缸里买一条小金鱼回去,养在家里的盆子里,那么小金鱼有可能水土不服XX,若是你把连鱼带缸的买回去就不会出现这种状况了,由于生存环境没有改变

🎅夸张示例2
若是咱们搬家,通常是把家具之类的一件一件的搬到新房子里去,而后到新房子里有从新布置,"Docker"的理念就是直接把房子铲起来放置到新的住址,那么里面的配置都不用动了,直接能够入住
  • 解决了运行环境配置问题软件容器, 方便持续集成并有助于总体发布的容器虚拟化技术

ps : docker理念:一次构建到处运行服务器

三.Docker能作什么

1.运行环境的配置

  • 只须要一次配置好环境,换到别的机子上就能够一键部署好,大大简化了操做

2.虚拟机技术

  • 在一个操做系统之上运行 / 安装另外一种操做系统
  • 应用程序, 操做系统和硬件三者之间的关系不变
🎅缺点
1. 资源占用多
2. 冗余步骤多
3. 启动慢(分钟级)

3.容器虚拟化技术

  • 不是模拟一个完整的操做系统, 他是将软件运行所须要的全部资源打包到一个隔离的容器
  • 只须要软件工做所须要的库资源和设置
  • 所以系统变得高效轻量, 且能保证任何环境中软件都能始终如一的运行

容器虚拟化技术

4.虚拟机技术与容器虚拟化技术

  • 不一样之处
🎅传统虚拟技术:
	🔰虚拟出一堆硬件, 运行一个完整的操做系统
	🔰而后在该系统上再运行一系列的应用程序

🎅容器虚拟化技术:
    🔰容器内的应用进程直接运行在宿主的内核, 容器内没有机子的内核
    🔰而且没有进行硬件的虚拟,所以更轻便 (只包含业务所须要的环境:"docker"基础镜像就"170M")
    🔰每一个容器之间相互隔离, 每一个容器都有本身的文件系统, 容器之间不会相互影响, 能区分计算资源

5.开发和运维问题解决

Docker理念 :一次构建到处运行架构

  • 更快的应用交付和部署
🎅传统的应用开发完成后,须要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行

🎅Docker化以后只须要交付少许容器镜像文件,在正式生产环境加载镜像并运行便可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间
  • 更便捷的升级和扩缩容
🎅随着微服务架构和Docker的发展,大量的应用会经过微服务方式架构,应用的开发构建将变成搭乐高积木同样,每一个"Docker容"器将变成一块"积木","应用的升级将变得很是容易"

🎅当现有的容器不足以支撑业务处理时,可经过镜像运行"新的容器进行快速扩容",使应用系统的扩容从原先的天级变成分钟级甚至秒级
  • 更简单的系统运维
🎅应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用"高度一致",容器会将应用程序相关的环境和状态彻底封装起来,不会由于底层基础架构和操做系统的不一致性给应用带来影响,产生新的BUG

🎅当出现程序异常时,也能够经过测试环境的相同容器进行快速定位和修复
  • 更高效的计算资源利用
🎅Docker是内核级虚拟化,其不像传统的虚拟化技术同样须要额外的Hypervisor支持,因此在一台物理机上"能够运行不少个容器实例",可大大"提高物理服务器的CPU和内存的利用率"

四.容器的基本组成

1.结构图

Docker结构图

3.镜像 : image

  • 一个只读模板, 一个镜像能够建立出来不少个容器
  • 至关于Python当中类与对象的概念,一个类能够实例化出来许多的 obj

4.容器 : container

  • 独立运行的一个或一组应用, 是由镜像实例化出来的
  • 能够把它当作是一个迷你版的Linux环境, 基础镜像170M (咱们装的通常4个多G)
  • 它能够被启动、开始、中止、删除。每一个容器都是相互隔离的

5.仓库 : repository

  • 集中存放镜像文件的场所
  • 仓库有两种区分
🎅仓库注册服务器:
	🔰存放着多个仓库
	
🎅仓库:
    🔰 每一个仓库包含多个镜像,每一个镜像有不一样的标签('tag':相似于版本号)
    🔰仓库分为公开仓库(Public)和私有仓库(Private)两种形式
    🔰最大的公开仓库是 "Docker Hub:(https://hub.docker.com/)"

6.总结

  • Docker 自己是一个容器运行载体或称之为管理引擎
  • image 文件生成的容器实例,自己也是一个文件,称为镜像文件
  • 同一个 image 文件,能够生成多个同时运行的容器实例
  • 一个容器运行一种服务,当咱们须要的时候,就能够经过docker客户端建立一个对应的运行实例,也就是咱们的容器
  • 至于仓库,就是放了一堆镜像的地方,咱们能够把镜像发布到仓储中,须要的时候从仓储中拉下来就能够了
相关文章
相关标签/搜索