啃Docker大骨头所必备的基础理论

  • 前言
  • 一:Docker概述
    • 1.1:Docker是什么?
    • 1.2:Docker的使用场景
    • 1.3:Docker容器与传统虚拟机的比较
    • 1.4:Docker引擎(Docker Engine)
    • 1.5:Docker的架构
    • 1.6:Docker的核心概念
      • 1.6.1:镜像(image)
      • 1.6.2:容器(container)
      • 1.6.3:仓库(repository)
    • 1.7:名称空间(Namespaces)
    • 1.8:控制组(Control groups)

前言

  • Docker三要素:容器,仓库,镜像
  • Dockfile工具制作成镜像,上传到仓库,如果要添加服务,只需要仓库下载镜像,速度非常快
  • 只要能装docker-engine引擎,在任意平台上都能部署docker
  • 容器不依赖于系统,而是依赖于引擎

一:Docker概述

1.1:Docker是什么?

  • 是一种轻量级别的“虚拟机”,与虚拟机相比是不依赖于系统

  • 是Linux容器里运行应用的开源工具

  • Docker在2013年一炮而红,直到现在,已经成为容器技术的代名词。

  • Docker从一开始就以提供标准化的运行时环境为目标,真正做到“build once, run anywhere”,可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出了CaaS(容器即服务)技术。

  • Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。

  • 是一个开源的应用容器引擎,让开发者可以打包大门的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

  • 沙箱(Sandbox):沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的系统产生影响

  • Docker的logo

1.2:Docker的使用场景

  • 打包应用程序简单部署
  • 可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云
  • 持续集成和持续交付(CI/CD):开发到测试发布
  • 部署微服务
  • 提供PAAS产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker(K8S) 属于PAAS}

1.3:Docker容器与传统虚拟机的比较

特性 Docker容器 虚拟机
启动速度 秒级 分钟级
计算能力消耗 几乎无 损耗50%左右
性能 接近原生 弱于
系统支持量(单机) 上千个 几十个
隔离性 资源限制 完全隔离
安全 共享内核,不安全 系统逻辑隔离,安全
服务 一个容器只跑一个服务 可以运行多个服务

1.4:Docker引擎(Docker Engine)

  • Docker Engine是具有以下主要组件的客户端-服务器应用程序:
  • 服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
  • REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。
  • 命令行界面(CLI)客户端(docker命令)。

1.5:Docker的架构

  • Docker使用客户端-服务器架构。Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。
  • Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快
  • Docker Client:客户端
    • Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker API。Docker客户端可以与多个守护程序通信。
  • Docker daemon:守护进程
    • Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
  • Docker images:镜像
    • 容器可以被打包成镜像
  • Docker container:容器
  • Docker registry:镜像仓库
    • 存储镜像的地方,默认在公共的Docker Hub上查找,可以搞个人仓库。

1.6:Docker的核心概念

1.6.1:镜像(image)

  • Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模式,比如:一个镜像可以是一个完整的CentOS操作系统环境,称为一个CentOS镜像;可以是一个安装了MySQL的应用程序,称之为一个MySQL镜像等等
  • Docker提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经做好的应用镜像来直接使用

1.6.2:容器(container)

  • Docker的容器是从镜像创建的运行实例,他可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不看见的,可以保证平台的安全性。
  • 还可以把容器看作是一个简易版的Linux环境,Docker利用容器来运行和隔离应用

1.6.3:仓库(repository)

  • Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公共仓库(public)或者私有仓库(private),这样一来当下次要在另一台机器上使用这个镜像的时候,只需要从仓库上pull下来就可以了。
  • 仓库注册服务器(registry)是存放仓库的地方,其中包含了多个仓库,每个仓库集中存档某一类镜像,并且使用不同的标签(tag)来区分他们。目前最大的公公仓库是Docker Hub,其中存放了数量庞大的镜像供用户下载使用。

1.7:名称空间(Namespaces)

  • Docker使用一种称为namespaces提供容器的隔离工作区的技术。运行容器时,Docker会为该容器创建一组 名称空间
  • 这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。
  • Docker Engine在Linux上使用以下名称空间:
    • **该pid命名空间:**进程隔离(PID:进程ID)。
    • **该net命名空间:**管理网络接口(NET:网络)。
    • **该ipc命名空间:**管理访问IPC资源(IPC:进程间通信)。
    • **该mnt命名空间:**管理文件系统挂载点(MNT:mount)。
    • **该uts命名空间:**隔离内核和版本标识符。(UTS:Unix时间共享系统)。

1.8:控制组(Control groups)

  • Linux上的Docker引擎还依赖于另一种称为控制组cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许Docker Engine将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,您可以限制特定容器可用的内存。

啃Docker大骨头所必备的基础理论相关推荐

  1. 啃下大骨头——排序(二)

    文章目录 2.3 交换排序 2.3.1冒泡排序 2.3.2 快速排序 2.3.2 快速排序优化 2.3.2 快速排序非递归 2.4 归并排序 2.5 非比较排序 2.3 交换排序 基本思想:所谓交换, ...

  2. 啃下大骨头——排序(三)

    文章目录 3.排序算法复杂度及稳定性分析 4.选择题练习 1. 快速排序算法是基于( )的一个排序算法. 2.对记录(54,38,96,23,15,72,60,45,83)进行从小到大的直接插入排序时 ...

  3. 啃Docker之必备基础管理操作

    啃Docker之必备基础管理操作 前言 一:环境准备 二:镜像的常规操作 三:容器的常规操作 前言 对于理论可以看我之前的博客 链接: https://blog.csdn.net/m0_4721994 ...

  4. eclipse java开发插件_10大Java开发必备的Eclipse插件

    原标题:10大Java开发必备的Eclipse插件 今天小编来给大家介绍10个Java开发人员必备的Eclipse 插件,它们有各自的优势,你可以从中选择适合你的那款. 1. EGit EGit是 J ...

  5. Docker大书房:什么是Docker?怎么用?

    2019独角兽企业重金招聘Python工程师标准>>> Docker大书房:什么是Docker?怎么用? Docker是2014年最炙手可热的技术,除了资本的流入,IBM.谷歌.Ra ...

  6. 一线大公司面试必备技能

    本文强推 | <28 天玩转算法训练营> 作者 | stormzhang 责编 | 林瑟 关注我的人里,程序员居多,在我了解之后发现,大多数程序员都有一个想进大厂码砖的梦,比如说国内的 B ...

  7. 大数据系统管理必备技能

    大数据系统管理必备技能 讲师介绍:  陈松鑫,CTO/CIO/技术副总裁/总工程师,Adobe知名讲师 Adobe教育专家委员会委员(国家级) Adobe教育专家委员会副主任委员(省级) Adobe全 ...

  8. 大数据学习必备 | 推荐几个牛X 的 github 项目,助你事半功倍

    前言 大家好,我是 梦想家 Alex .我们都知道 github 对于程序员们而言,就是一个巨大的"聚宝盆",上面不仅有很多优质的开源项目,还有很多热爱开源分享的开发者.但如何从浩 ...

  9. 十大数据爱好者必备书籍

    十大数据爱好者必备书籍 转载请注明! 这是一个独一无二的书籍前十推荐,对每个十大推荐展示出顶级付费或免费书籍推荐.如果你对数据书籍感兴趣,这个列表可能合你口味. Matthew Mayo 发表于 KD ...

最新文章

  1. 对于SD-WAN安全的5个误区
  2. 【Java源码分析】LinkedHashSet和HashSet源码分析
  3. python苹果电脑如何下载_python for Mac|python Mac版V2.7.10下载(暂未上线)_预约_飞翔下载...
  4. 一个关于pynoi游戏的C语言编程
  5. 2017.3.31 spring mvc教程(六)转发、重定向、ajax请求
  6. java 反射创建对象并赋值_[原创] Java JDBC连接数据库,反射创建实体类对象并赋值数据库行记录(支持存储过程)...
  7. java使用zxing生成二维码
  8. 第五:RobotFramework测试开发环境部署
  9. Illustrator中文版教程,如何在 Illustrator 中添加文字?
  10. L007-oldboy-mysql-dba-lesson07
  11. android 看门狗引起crash分析
  12. 服务器上搭shinyApp:shiny-server配置及报错解决
  13. 处理XML实例-股票历史数据下载
  14. java weblogic 下载,weblogic 下载 weblogic 12.2.1 for windows 64位的下载地址
  15. 2020年系统集成项目管理工程师课教程
  16. 华为转正答辩ppt范文_华为转正答辩模板下载ppt课件.ppt
  17. Linux中各种 command not found问题解决
  18. 怎么将CAD中的两条直线拉成弧形呢?
  19. Anchor box坐标(Sac,Sar,Eac,Ear)到Precdict box坐标(Spc,Spr,Epc,Epr)关系推导
  20. Lync2013扩展开发

热门文章

  1. java kisso_java sso 基于 cookie 实现方案 kisso
  2. WDQ.ERP.K3Cloud.Util使用文档
  3. redis 分布式锁有什么缺陷
  4. 动态规划——最大子序列和
  5. Mariadb数据库集群设计实验
  6. 魔改xxl-job,彻底告别手动配置任务!自动注册xxljob定时任务
  7. 2017-05-04-Facebook出品的Android声明式开源新框架Litho文档翻译-总览和导航
  8. 第九篇:亚盘的平衡手法
  9. linux下squashfs使用方法,Linux 系统管理(EL7)-squashfs篇
  10. 企业级应用的概念和特点