IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 带你初识Docker (概述、与虚拟机的区别、核心概念) -> 正文阅读

[系统运维]带你初识Docker (概述、与虚拟机的区别、核心概念)

前言

Docker 是在 Linux 容器里运行应用的一种开源工具,是一种轻量级的虚拟机

mark

  • 以linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务

  • 例如: pid=2 ——> python pid=3——>java pid4——>php,三个服务可能会相互影响

  • 使用者期望将这三个不同的服务,跑在不同的运行时环境中实现相互不影响,同时不会增加服务器成本
    ——> 延伸出——>能否将这三种服务分别封装起来——>KVM虚拟化技术,实现了一个操作系统模拟多个操作系统/不同的运行时环境

  • 随着技术发展——>虚拟化技术开销较大(例如:只 要运行一个py脚本,想要使用虚拟化方式实现,还需要安装一个操作系统,并不方便/合理)

    ——>延伸出容器技术

  • 虚拟化层的抽象层(用户层)剥离,使用docker engine来替代(来宾操作系统去除),只要通过引擎就可以直接连接到宿主机操作系统中,极大减小了开销

一、虚拟化概述

虚拟化:将应用程序和系统内核资源进行解耦,以操作系统级别进行隔离,目的是提高资源利用率

1.虚拟化三种模式

  • 全虚拟化(50%)
  • 半虚拟化(软、硬件结合的方式)
  • 直通(以全硬件的方式实现虚拟化的功能)

2.虚拟化功能

  • 在一个操作系统内,模拟多个操作系统
  • 以软件的方式模拟物理设备的功能

3.三个层面

  • 操作系统层
  • 抽象层
  • 内核层

二、Docker容器概述

名称空间:以不同空间划分不同资源

1.6大名称空间

namespace资源隔离——用容器技术封装

mount文件系统,挂载点——>一个文件系统内,不能重复挂载一个指定目录
user操作进程的用户和用户组
pid进程编号
uts主机名和主机域
ipc信号量、消息队列、共享内存(不同的应用调用内存资源的时候应该使用不同的内存空间)
net网络设备、网络协议栈、端口等

ipc:把内存资源划分开来,给不同的进程去用,每个应用的进程会给它分配一块资源,它只能用自己的(进程级别隔离)

net:网络资源

2.Docker和虚拟化的区别

小而灵活,效率至上!

特性Docker 容器虚拟机虚拟化
启动速度秒级分钟级
运行性能接近原生(直接在内核中运行)10%-20%50%左右损失
磁盘占用50-100MB3-5G
数量成百上千,每个进程可控制一个容器几十个
隔离性进程级别操作系统(更彻底)
操作系统主要支持Linux几乎所有
封装程度只封装目标代码和依赖关系,共享宿主机内核完整的操作系统,与宿主机隔离

容器是依赖于内核来隔离,彼此的关系像共享一样,所以安全性较之虚拟机差一些,毕竟不是完全隔离。所以若一个容器被黑客攻破,宿主机基本也就没了~
这里也不是完全没有办法,那就是 cgroup 资源分配,其能提供一定的安全机制

Docker 拥有的众多优势与操作系统虚拟化的特点是分不开的

  1. 传统虚拟机需要有额外的虚拟机管理程序和虚拟机操作系统层
  2. 而 Docker 容器是直接再操作系统层面之上实现的虚拟化

3.使用docker有什么意义

①相同版本的docker引擎

②打包成镜像包,拖到另一个操作系统中(把引擎放在镜像中,带着镜像到处跑)

③利用引擎把这个镜像再去运行为之前的相同的一模一样的容器了

镜像——>封装的某一时刻的服务/应用状态

容器——>应用跑起来的状态(正常提供服务的状态—运行时running)

4、应用场景

  • 打包应用程序简单部署

  • 可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦)例如:需要把服务器从腾讯云迁移到阿里云,如果采用的是 Docker 容器技术,整个迁移的过程只需要在新的服务器上启动我们需要的容器就可以了

三、docker的核心概念

1.镜像(Image)

docker镜像是创建容器的基础,类似于虚拟机的快照

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

2.容器(Container)

Docker 的【容器】是【从镜像创建的运行实例】,它可以被【启动、停止和删除】,容器即服务

  1. 创建的每一个容器都是相互隔离、互不可见的,相互之间隔离性超强,从而保证平台的安全性
  2. 可以把容器看做是一个简易版本的 Linux 环境,Docker 可以利用容器来运行和隔离一个个应用

3.仓库(Repository)

Docker 仓库时用来集中保存镜像的地方

  1. 创建完自己的镜像后,可以使用【push】命令将其上传至【公共仓库(public)】或【私有仓库(Private)
  2. 之后,在另一台机器上使用这个镜像,直接【pull】下来就可以了

仓库注册服务器【Registry】是存放仓库的地方,其中包含了多个仓库,每个仓库存放某一类镜像,并使用不同的标签【tag】来区分它们

目前最大的公共仓库是【Docker Hub】

总结

镜像(镜像的压缩包)
容器(实例,通过镜像创建)
仓库(存放镜像的地方)
公有仓库:Docker官方仓库
私有仓库:个人化、私有化的仓库

Docker是容器管理工具,容器由镜像创建而来,镜像从仓库中获取而来,仓库分为公有、私有

1.docker run hello-world

run指令 运行

①检测本地有没有该镜像(没有的话直接到docker hub上下载)

②create(将镜像创建为容器)+start将创建好的容器运行起来

小结:Dcoker是基于容器技术的轻量级虚拟化解决方案
低层原理:docker是容器引擎,把linux的cgroup、 namespaces 等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷界面(命令行C1i、api等) C/s

2.问:2013年,发布了docker (面试话术)

docker有哪些优势? 和虚拟化比有什么优势?

  • docker把容器化技术做成了标准化平台CAAS(docker 统一/指定了容器化技术的标准化平台)

    使用docker有什么意义(实现了3个统一)
    docker引擎统一了基础设施环境-docker环境——>image——>封装一一个简易的操作系统(3.0+G)
    docker引擎统一了 程序打包(装箱/封装-类比于集装箱)方式-docker镜像——>images
    docker引擎统—了程序部署(运行)方式-docker容器——>基于镜像——>运行为容器(可运行的环境)

    • 实现了一次构建、多次、多处使用

3.如何把多个目录挂载到同一个目录下?

(存储引擎)overlay2(现在使用) 和 (存储引擎) aufs(早期使用)叠加

4.docker原理

docker namespace实现的是资源隔离,cgroup实现的是资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配200g并不是实际占用物理磁盘200g)

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:31:26  更:2021-11-25 08:32:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:39:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码