zoukankan      html  css  js  c++  java
  • docker 第一课 —— 从容器到 docker

    1. 容器的概念

    • 一种虚拟化的解决方案
      • 与虚拟机所不同的是,虚拟机通过中间层,将一台或多台独立的机器虚拟运行于物理硬件之上;
      • 而容器是直接运行于操作系统内核之上的用户空间;
    • 基于上述,容器虚拟化也被称为操作系统虚拟化;
      • 由于依赖于操作系统的特性,因此容器只能运行与底层操作系统相同或相似的操作系统
    • 而 docker 使用的容器技术则是依赖于 Linux 内核特性:namespace 和 cgroups(control group)
      • 因此 docker 上只能运行 Linux 类型系统,而不能运行 windows 系统;

    2. Linux 容器技术 vs 虚拟机技术

    如下图示为二者的层次化的分别:


    这里写图片描述

    • docker,占用更少的磁盘空间;
      • 使用虚拟机,不但依赖应用(App)和其依赖的库(bins/libs),还需要包含完整的操作系统(Guest OS),为了运行数 MB 的应用,却需要安装占用几个 GB 的操作系统;

    3. docker

    • 将应用程序自动部署到容器的一种开源引擎,其使用 go 语言编写;
    • 提供简单轻量的建模方式;
    • 职责的逻辑分离;

    使用场景:

    • 使用 docker 容器开发、测试、部署服务;
    • 创建隔离的运行环境;
    • 搭建测试环境;
    • 构建多用户的平台即服务(PaaS)基础设施
    • 提供软件即服务(SaaS)应用程序

    4. docker 的基本组成


    这里写图片描述

    • docker client:客户端; docker daemon:守护进程;
      • c/s 架构
    • docker image:镜像;
      • 镜像是容器的基石;
      • 层叠的只读文件系统
    • docker container:容器;
      • 通过镜像启动;
      • 启动和执行;
      • 写时复制(copy on write)
    • docker registry:仓库
      • 公有/私有
      • Docker Hub

    5. namespace/cgroups

    • namespace
      • 对于编程语言,实现封装时的代码隔离;
      • 对于操作系统,则可实现对系统资源的隔离,系统资源包括:进程、网络、文件系统…
      • namespace 包涵一下几种:
        • PID(process id),进程隔离;
        • NET(network),管理网络接口
        • IPC(InterProcess Communication),管理跨进程通信的访问;
        • MNT(Mount),管理挂载点;
        • UTS(Unix Timesharing System),隔离内核和版本标识;
    • Control groups
      • 使用 control groups 对隔离的资源进行管理;
      • 用来分配资源,实现了:资源限制,优先级设定,资源计量,资源控制;
  • 相关阅读:
    操作系统学习笔记 003 安装SourceInsight
    操作系统学习笔记 002 安装NASM
    操作系统学习笔记 001 安装Ubuntu
    ATmega8仿真——键盘扫描的学习
    Open-Drain&Push-Pull
    ATmega8仿真——LED 数码管的学习
    SSD固态硬盘的GC与Trim
    前缀、中缀、后缀表达式
    动态规划解决01背包问题
    javascript 获取图片原始尺寸
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421592.html
Copyright © 2011-2022 走看看