Docker容器虚拟化平台

  • 1. Docker 的概念
    • 1.1 Docker 为什么会出现?
    • 1.3 Docker 的作用
    • 1.2 Docker 的历史
  • 2. Docker 容器技术与虚拟机的区别
  • 3. Docker 架构图
  • 4. Docker 的特性

1. Docker 的概念


  • Docker,翻译过来就是码头工人

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容易完全使用沙盒机制,互相之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统

    小知识沙盒也叫沙箱sandbox)。在计算机领域指一种虚拟技术,而且多用于计算机安全技术。安全软件可以让它在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,而这不会对系统造成任何危害。

  • DockerdotCloud 公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。

    GiHub 地址: https://github.com/moby/moby

    小知识: LXCLinux Container 的简写。Linux Container 容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他负载型。LXC 主要通过Kernelnamespace 实现每个用户实例之间的项目隔离,通过cgroup 实现对资源的配额和调度。

    Docker 官网:https://www.docker.com
    Docker 中文库: https://www.docker.org.cn/
    Docker 文档:https://docs.docker.com/
    Docker 仓库:https://hub.docker.com/

1.1 Docker 为什么会出现?

  • 一款产品:开发-上线 两套环境! 应用环境,应用配置!
  • 环境配置是十分的麻烦,每一个机器都要部署环境(集群Redis、ES、HaDoop…)! 费时费力。而且也不能跨平台
  • 于是就想:发布一个项目(jar + (Redis MySQL JDK ES)),项目能不能带上环境安装打包
  • 传统:开发jar,运维来做
  • 现在:Docker 提出了解决方案开发打包部署上线,一套流程做完
  • 安卓流程:java -> apk -> 发布(应用商店) -> 张三下载apk -> 安装即可用
  • docker流程:java-jar(环境) -> 打包项目带上环境(镜像) -> (Docker仓库:商店) -> 下载我们发布的镜像 -> 直接运行即可

  • Docker 的思想就是来自于集装箱
  • JRE - 多个应用(端口冲突) - 原来都是交叉的!
  • 隔离:Docker核心思想! 打包装箱!每个箱子都是相互隔离的
  • Docker 通过隔离机制,可以将服务器利用到极致!
  • 本质:所有的技术都是因为出现了一些问题,我们需要去解决,才去学习

1.3 Docker 的作用

DevOps (开发、运维)

  • 应用更快速的交付和部署

    • 传统:一堆帮助文档,安装程序
    • Docker:打包镜像,发布测试,一键运行
  • 更便捷的升级和扩缩容
    • 使用 Docker 之后,我们部署应用就像搭积木一样
    • 如:把项目打包成一个镜像,我们拓展了其中的一个服务器A,这时在服务器B上一键运行这个镜像,就直接完成了拓展,就不再需要一个个的去配置和升级。
  • 更简单的系统运维
    • 在容器化之后,我们的开发、测试环境都是高度一致的
  • 更高效的计算资源利用
    • Docker 是内核级别的虚拟化,可以在一个物理机上运行很多的容器实力!服务器的性能可以被压榨到极致

1.2 Docker 的历史

  • 2010年,几个年轻人, 在美国成立了一家公司 dotcloud
  • 做一些pass的云计算服务!LXC(Linux Container 容器)有关的容器技术!
  • 他们将自己的技术(容器化技术)命名为 Docker
  • 开源:开放源代码
  • 2013年,Docker开源! 越来越多的人发现docker的有点!火了。Docker每个月都会更新一个版本!2014年4月9日,Docker1.0正式发布!
  • Docker 为什么这么火?十分的轻巧
  • 在容器技术出来之前,我们都是使用虚拟机技术
  • 虚拟机:在windows 中安装一个VMware,通过这个软件我们可以虚拟化出来一台或者多电脑!
  • 虚拟机也属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!

vm : linux centos 原生镜像(一个电脑!) 隔离、需要开启多个虚拟机! 几个G 几分钟
docker: 隔离,镜像(最核心的环境 4m + jdk + mysql)十分的小巧,运行镜像就可以了!小巧! 几个M。秒级启动!

2. Docker 容器技术与虚拟机的区别


  • 相同点:docker和容器技术和虚拟机技术,都是虚拟化技术

  • 不同点:容器技术相比虚拟机技术少了虚拟机操作系统这一层,所以docker效率比虚拟机效率高。达到了秒级启动的地步。

  • Docker相较于VM的优点

    1. 比VM小、快,Docker容器的尺寸减小相比于整个虚拟机大大简化了分布到云和分发时间的开销。Docker启动一个容器实例时间仅仅需要几秒钟。
    2. Docker是一个开放的平台,构建、发布和运行分布式应用程序。
    3. 开发人员不需要关系具体是哪个Linux操作系统
    4. Google、微软(azure)、亚马逊、IBM等都支持docker
    5. Docker支持Unix/Linux操作系统,也支持 Windows 和 Mac
  • Docker 局限性

    Docker 用于应用程序时是最有用的,但并不包含数据。日志、数据库等通常放在Docker容器外。一个容器的镜像通常都很小,不用和存储大量数据,存储可以通过外部挂载等方式使用,比如:NFS、ipsan、MFS等,或者docker命令,-v映射磁盘分区。

    总之,docker只用于计算,存储交给别人。

3. Docker 架构图



Docker的工作流程

  1. 启动docker
  2. 下载镜像到本地
  3. 启动Docker容器实例

Docker核心技术
1. Namespace : 实现Container的进程、网络、消息、文件系统和主机名的隔离。
2. Cgroup : 实现对资源的配额和调度。

注意: Cgroup的配额,可以指定实例使用的CPU个数,内存大小等。

4. Docker 的特性


  • 文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
  • 资源隔离:系统资源,像CPU和内存等可以分配到不同的容器种,使用cgroup。
  • 网络隔离:每个进程容器运行在自己的网络空间,虚拟接口的IP地址。
  • 日志记录:Docker将收集到和记录的每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或者批量检索
  • 变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或者手动配置。
  • 交互式Shell:Docker可以分配一个虚拟终端并且关联到任何容器的标准输出上,例如运行一个一次性交互shell。

Docker之Docker概述相关推荐

  1. 程序员都在学的docker--docker基本命令(docke概述、安装docker、docker基本使用)

    文章目录 一. docker概述 1.1 Docker中基本概念(三大核心) 镜像(Image) 容器(Container) 仓库(Repository) 1.2 Docker 与虚拟机 相同点 do ...

  2. docker--docker基本命令(docke概述、安装docker、docker基本使用)

    文章目录 一. docker概述 1.1 Docker中基本概念(三大核心) 1.2 Docker 与虚拟机 1.3 Docker引擎(Docker Engine) 1.4 docker的分层存储 二 ...

  3. Docker基本理论概述

    < Docker基本理论概述 > 关于Docker 1.为什么要使用 Docker ? 项目从开发到上线,从操作系统,到运行环境,再到应用的详细配置.作为开发工程师与运维工程师之间的协作, ...

  4. 搭建Docker环境---Docker概述

    Docker 包括三个基本概念: 镜像(Image) 容器(Container) 仓库(Repository) 这三部分组成了Docker的整个生命周期,如下图所示,容器是由镜像实例化而来的,这和我们 ...

  5. docker tag 删除images_深入浅出 Docker (二) —— Docker的基本概念和架构原理

    1. Docker 的基本概念 Docker 有三个基本概念: 镜像(Image) 容器(Container) 仓库(Repository) 1.1 镜像(Image) 操作系统分为内核和用户空间.对 ...

  6. 【Docker】docker设置固定ip地址

    1.美图 2.概述 docker设置固定ip地址 Docker安装后,默认会创建下面三种网络类型 $ docker network ls NETWORK ID NAME DRIVER SCOPE 97 ...

  7. 【自学Docker 】Docker ps命令

    Docker ps命令 大纲 Docker ps命令概述 docker ps 命令可以用来列出 Docker容器 相关信息. Docker ps命令语法 haicoder(www.haicoder.n ...

  8. 第133天学习打卡(Docker 初识Docker Docker的基本组成 安装docker 阿里云镜像加速 Docker常用命令)

    Docker学习 Docker概述 官方地址:Empowering App Development for Developers | Docker Docker的思想来自于集装箱! 隔离:Docker ...

  9. 【自学Docker 】Docker export命令

    Docker export命令 概述 docker export教程 docker export 命令可以用于将 Docker容器 里的文件系统作为一个 tar 归档文件导出到标准输出.docker ...

最新文章

  1. 苹果史上最强芯片竟然是个“组装货”!iPhone SE涨价,13系列是真绿了
  2. web10 动态action的应用
  3. idea创建web项目运行报404错误_使用IDEA新建Web工程启动报404的错误
  4. 【转】Qt中的QString,QByteArray,Qchar, char*
  5. FISSA:融合项目相似度模型和自注意网络的时序推荐
  6. Python获取指定文件夹下的文件名
  7. Dubbo介绍前篇------单一应用框架、垂直应用框架、分布式应用框架、流动计算框架,及RPC的简介
  8. 海康VisionMaster算法平台介绍
  9. python与java通信——使用socket模块
  10. epic怎么添加本地游戏_节奏大师怎么玩自制歌曲?节奏大师添加本地歌曲方法_APP教程...
  11. java一定时间间隔的定时任务_详解java定时任务
  12. 海洋网络收音机海洋影音盒
  13. PowerPoint PPT 模板插入可修改的文本框
  14. [高通SDM450][Android9.0]外接键盘闪屏以及默认使用虚拟键盘
  15. 时光老去,远了年少的我
  16. centos 7下安装php,centos7下安装php7
  17. 小新700linux网卡驱动,小新Air14网卡驱动2024.0.2.101/12.0.0.725版下载,适用于Win10-64-驱动精灵...
  18. An unknown server-side error occurred while processing the command. Original error: Error executing
  19. if-else过多,使用策略模式(Strategy)解决if-else乱象
  20. 2022年全球与中国数模转换器市场现状及未来发展趋势

热门文章

  1. php 表格生成word,PHP生成WORD表格
  2. linux可以挂载nas盘吗_linux可以挂载nas盘吗
  3. Latex的使用(Ctex+TeXstudio)
  4. 质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。合数(Composite number)是与质数对应的概念,在大于1
  5. 嵌入式系统大作业——基于QT的3D模型展示
  6. Java(JavaEE)学习线路图
  7. APPCAN学习笔记001---app高速开发AppCan.cn平台概述
  8. 浏览器扩展管理 - 高级版
  9. Xilinx ISE系列教程(8):读取FPGA芯片唯一ID号
  10. word分散对齐调整宽度_Word文字对齐如何调整,word对齐方法大全