zoukankan      html  css  js  c++  java
  • docker 001 简介

    docker 001

    docker简介

    容器与管理程序虚拟化不同,管理程序虚拟化是将一台或多台独立的虚拟机运行在硬件上,而容器则是直接在操作系统内核上的用户空间。因此,容器虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用户控件运行在同一台宿主机上。

    因此,容器只能运行与宿主机相同或相似的操作系统,例如:ubuntu 服务器上可以运行 centos,但无法运行windows。

    docker 是一个能把应用程序自动部署到容器的开源引擎。

    docker 在虚拟化的容器执行环境中增加了一个应用程序部署引擎,引擎的目标是提供一个清凉、快速的环境,能够运行开发者的程序,并方便高效的将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。

    docker 的目标是提供以下内容:

    1. 提供一个简单、轻量的建模方式

      快速修改程序代码,快速启动,高性能,系统资源利用率高

    2. 职责的逻辑分离

      开发人员只需管理容器中的程序,运维人员只需关心容器管理。保证开发与部署环境的一致

    3. 快速高效的开发生命周期

      缩短从开发、测试部署、上线的周期,是程序具有可移植性,易构建,易协作

    4. 鼓励使用面向服务的架构

      鼓励面向服务的构架和微服务架构,推荐一个容器只运行一个程序或进程,这就形成了分布式应用程序模型。

    docker 组件

    • docker 客户端和服务器(也称为 docker 引擎)
    • docker 镜像
    • registry
    • docker 容器

    1. docker 客户端和服务器

    docker 为 C/S 架构,客户端向服务器或守护进程发送请求,服务器或者守护进程完成工作并返回结果。两者部署于同一台机器,也可以部署在不同机器。

    docker 架构:

    2.docker 镜像

    镜像是基于联合文件系统的一种层式结构,由一系列执行构建出来,它是 docker 世界的基石,是 docker 生命周期中“的 构建” 部分。用户基于镜像运行自己的容器。

    镜像体积小,便携,易于分享、存储和更新。

    3.registry

    docker 使用 registry 保存用户构建的镜像。registry 有公私之分。docker 公司运营的公共 registry 是 docker hub。用户自己架设自己私有的的 registry。

    用户可以在docker hub 上 保存自己的私有镜像,也构建和分享镜像。

    4.容器

    容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,在 docker 的生命周期中,镜像是构建和打包的阶段,容器是启动和执行的阶段。

    总结起来,docker 容器是:

    • 一个镜像格式
    • 一系列标准的操作
    • 一个执行环境

    容器就像是集装箱,容器中的软件镜像就像是集装箱中的货物,而且我们可以对容器中的软件镜像进行创建、启动、关闭、重启和销毁操作。

    docker 不关心容器有种有什么,也不关心容器会被放到哪里。

    docker 的应用场景

    • 加速本地开发和构建流程
    • 让程序在不同环境可以获得相同的运行结果
    • 创建隔离环境来进行测试
    • 构建一个多用户的平台即服务(PaaS)的基础设施
    • 为开发、测试提供一个轻量级的独立沙盒环境或将独立的沙盒用于技术教学。
    • 提供软件即服务(SaaS)应用程序
    • 高性能、超大规模的宿主机部署

    docker 的技术组件

    • 一个原生的 Linux 容器格式,docker 中称为 libcontainer
    • linux 内核的命名空间:namespace
    • 文件系统隔离: 每个容器都有的自己的 root 文件系统
    • 进程隔离: 每个容器都运行在自己的进程环境中
    • 网络隔离: 容器间的虚拟网络接口和 IP 地址是分开的
    • 资源隔离和分组:使用 cgroups 将 CPU 和内存之类的资源独立分配给每个 docker 容器
    • 写时复制:文件系统是通过写时复制创建的(文件系统是分层的、快速的、且占用磁盘空间更小)
    • 日志:容器产生的 STDIN、STDOUT、STDERR 这些 IO 流都会被收集记入日志,用来进行日志分析和故障拍错
    • 交互式 shell:用户可以创建一个伪tty 终端,连接到STDIN,为容器提供交互式 shell。
  • 相关阅读:
    vue 高度 动态更新计算 calcHeight watch $route
    vue 自定义组件 v-model双向绑定、 父子组件同步通信【转】
    vue 异步请求数据后,用v-if,显示组件,这样初始化的值就在开始的时候传进去了
    vue $parent 的上一级 有可能不是父组件,需要好几层$parent 如果这样 还不如用 this.$emit
    vue render {} 对象 说明文档
    params.row[params.column.key] vue h函数 当前单元格 h函数 div 属性 值或数组 render
    upload 上传按钮组件 iview
    下拉列表事件 Dropdown iview
    this.treeData = JSON.parse(JSON.stringify(this.d)) 树的序列化反序列化
    tree iview treeData json数据 添加 selected 数据 要进行vue.set 进行响应式添加
  • 原文地址:https://www.cnblogs.com/resn/p/12175034.html
Copyright © 2011-2022 走看看