首页 > 其他分享 >docker详解(一)

docker详解(一)

时间:2024-09-20 14:52:29浏览次数:3  
标签:容器 操作系统 虚拟化 虚拟机 硬件 详解 docker Docker

1、虚拟化技术

        1.1、什么是虚拟化

        在计算机技术中,虚拟化(Virtualization)是一种资源管理技术。它是将计算机的各种实体资源,如:服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用更好的方式来利用这些资源。虚拟化的目的是为了在同一个主机上运行多个系统或应用,从而提高系统资源的利用率,并带来降低成本、方便管理和容错容灾等好处。

        1.2、硬件虚拟化

        硬件虚拟化就是硬件物理平台本身提供了对特殊指令的截获和重定向的支持。支持虚拟化的硬件,也是一些基于硬件实现软件虚拟化技术的关键。在基于硬件实现软件虚拟化的技术中,在硬件是实现虚拟化的基础,硬件(主要是CPU)会为虚拟化软件提供支持,从而实现硬件资源的虚拟化。

        1.3、软件虚拟化      

  • 完全虚拟化:(Full Virtualization)虚拟机模拟完整的底层硬件环境和特权指令的执行过程,使客户机操作系统可以独立运行。支持完全虚拟化的软件有:Parallels Workstation、VirtualBox、Virtual Iron、Oracle VM、Virtual PC、Virtual Server、Hyper-V、VMware Workstation、QEMU等
  • 硬件辅助虚拟化:(Hardware-assisted Virtualization)是指通过硬件辅助支持模拟运行环境,使客户机操作系统可以独立运行,实现完全虚拟化的功能。支持硬件辅助虚拟化的软件有:Linux KVM、VMware Workstation、VMware Fusion、Virtual PC、Xen、VirtualBox、Parallels Workstation等
  • 部分虚拟化:(Partial Virtualization)只针对部分硬件资源进行虚拟化,虚拟机模拟部分底层硬件环境,特别是地址空间。这样的环境支持资源共享和线程独立,但是不允许建立独立的客户机操作系统。
  • 平行虚拟化:(Para-Virtualization)虚拟机不需要模拟硬件,而是将部分硬件接口以软件的形式提供给客户机操作系统。如:早期的Xen。
  • 操作系统层虚拟化:(OS-level virtualization)这种技术将操作系统内核虚拟化,可以允许使用者空间软件实例被分割成几个独立的单元,在内核中运行,而不是只有一个单一实例运行。这个软件实例,也被称为是一个容器(containers)、虚拟引擎(Virtualization engine)、虚拟专用服务器(virtual private servers)。每个容器的进程是独立的,对于使用者来说,就像是在使用自己的专用服务器。 Docker容器技术就是属于操作系统层虚拟化的范畴。

2、什么是Docker?

        Docker是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到安装了任何 Linux 发行版本的机器上。Docker基于LXC来实现类似VM的功能,可以在更有限的硬件资源上提供给用户更多的计算资源。与同VM等虚拟化的方式不同,LXC不属于全虚拟化、部分虚拟化或半虚拟化中的任何一个分类,而是一个操作系统级虚拟化。

        Docker是直接运行在宿主操作系统之上的一个容器,使用沙箱机制完全虚拟出一个完整的操作,容器之间不会有任何接口,从而让容器与宿主机之间、容器与容器之间隔离的更加彻底。每个容器会有自己的权限管理,独立的网络与存储栈,及自己的资源管理能,使同一台宿主机上可以友好的共存多个容器。

        Docker借助Linux的内核特性,如:控制组(Control Group)、命名空间(Namespace)等,并直接调用操作系统的系统调用接口。从而降低每个容器的系统开销,并实现降低容器复杂度、启动快、资源占用小等特征。

        

Docker包含了由一系列工具组成生态系统:

  • Docker Client

  • Docker Server

  • Docker Machine

  • Docker Images

  • Docker Hub

  • Docker Compose

工作中,需要打交道最多的是Docker Client和Docker Hub。Docker的主要功能是构建、部署和管理容器。

3、为什么需要Docker

        软件开发最大的麻烦事之一,就是环境配置。用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。换一台机器,就要重来一次,费时费力。

docker可以帮助我们:

  • 简化配置
  • 提高开发效率
  • 隔离应用
  • 快速部署

4、Docker和虚拟机的区别

虚拟机Virtual Machine与容器化技术(代表Docker)都是虚拟化技术,两者的区别在于虚拟化的程度不同。

  • Docker有着比虚拟机更少的抽象层。
  • Docker利用的是宿主机的内核,而不需要Guest OS。

由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker有明显优势。

当新建一个 容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。当新建一个虚拟机时,虚拟机软件需要加载GuestOS,整个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,省略了这个复杂的过程,因此新建一个docker容器只需要几秒钟。

标签:容器,操作系统,虚拟化,虚拟机,硬件,详解,docker,Docker
From: https://blog.csdn.net/weixin_47775373/article/details/142356561

相关文章

  • 【网络安全】基础知识详解(非常详细)零基础入门到精通,收藏这一篇就够了_网络安全的入门
    ......
  • 电脑网络怎么弄动态ip :步骤详解与优势探讨
    在当今的数字化时代,网络连接已成为我们日常生活和工作中不可或缺的一部分。对于大多数用户而言,动态IP地址是一种便捷且常用的网络配置方式,它允许设备在每次连接到网络时自动获取一个新的IP地址。这种设置不仅简化了网络管理,还提高了网络的安全性和灵活性。本文将详细介绍如何为......
  • 如何高效利用API进行电商开发:淘宝API接口详解
    淘宝(AlibabaGroup)提供了丰富的API接口供开发者使用,这些接口可以帮助开发者在淘宝平台上实现各种功能,如商品搜索、交易管理、订单处理等。对于电商开发者来说,高效利用淘宝API进行开发至关重要。以下是一些关键步骤和技巧,帮助你高效利用淘宝AP进行电商开发:了解淘宝开放平台注......
  • docker 安装 mysql 详细教程
    1.打开docker目录cd/usr/local/mkdirdocker2.创建mysql文件夹/usr/local/dockermkdirmysql3.打开mysql文件夹cdmysql/4.创建配置文件目录mkdirconfig5.打开configcdconfig/6.编写配置文件vimmy.cnf[client]#端口号port=3306[mysql]no-be......
  • swolle docker 镜像安装
    拉取镜像dockerpullphpswoole/swoole:latest测试镜像环境:dockerrun--rmphpswoole/swoole:latest"php-m"dockerrun--rmphpswoole/swoole:latest"php--riswoole"dockerrun--rmphpswoole/swoole:latest"composer--version"启动容器dockerr......
  • MyFlash MySQL数据恢复实战案例:将MySQL Docker容器误删除DELETE的数据进行闪回恢复
    创建MySQL容器mkdir-p{data,conf.d}cat>conf.d/log-bin.cnf<<-EOF[mysqld]log_bin=mysql-binlogserver_id=1EOFdockerrm-fmysqldockerrun-d--namemysql-eMYSQL_ROOT_PASSWORD=123456-p3306:3306-v/etc/localtime:/etc/localtime-v./data:......
  • 【Git】Git Commit Angular规范详解
    在团队协作开发中,保持Git提交记录的一致性和清晰性对于维护项目的可读性和历史追溯至关重要。Angular团队提出了一套详细的CommitMessage格式化规范,旨在解决这一问题。下面将详细介绍如何遵循Angular规范来编写Git提交信息,并探讨其带来的好处。Angular规范的核心要素Angu......
  • Python中Matplotlib详解
    文章目录Python中Matplotlib详解一、引言二、Matplotlib基础1、安装Matplotlib2、Matplotlib的构成3、基本绘图3.1、导入库3.2、创建数据3.3、绘制图形三、高级特性1、定制化图形1.1、设置标题1.2、设置坐标轴标签1.3、显示图例2、与其他库的协同2.1、使用numpy2.2、......
  • 【网络原理】❤️Tcp 常用机制❤️ —— 延时应答,捎带应答, 面向字节流, 异常情况处理。保姆
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • 操作符详解
    目录进制与进制转化十进制二进制 十六进制 十进制转化成二进制二进制转化成八进制逗号表达式下标访问与函数调用[]下标引用操作符()函数调用操作符结构成员访问操作符结构体概念结构的声明结构体变量初始化与打印操作符的属性优先级结合性进制与进制......