首页 > 运维 > linux运维 > 正文

Docker的介绍

蓮花仙者
发布: 2025-07-18 10:12:02
原创
657人浏览过

一、虚拟化与容器虚拟化的概述

操作系统层虚拟化指的是在单一宿主操作系统上划分出若干独立的执行环境。这种虚拟化技术由操作系统内核直接提供,虚拟出来的操作系统共享宿主机的内核及硬件资源。操作系统虚拟化的核心在于将操作系统与应用层隔离开,并通过虚拟化技术让应用层认为自己独占操作系统。

操作系统层虚拟化的优势在于实现了虚拟操作系统与物理操作系统的隔离,避免了重复安装物理操作系统的麻烦。著名的操作系统虚拟化解决方案包括Virtual Server、Zone、Virtuozzo以及虚拟专用服务器(Virtual Private Server,VPS)。VPS通过虚拟服务器软件在一台物理机上创建多个相互隔离的小型服务器,这些小型服务器拥有各自独立的操作系统,其运行和管理与独立主机无异,确保用户独享资源并节约成本。

虚拟化技术分类包括仿真虚拟化(对硬件无要求,性能较低)、VMware半虚拟化(虚拟机可使用真实物理硬件,性能高,但需要修改内核)、Xen硬件辅助虚拟化以及VMware和KVM(需要硬件支持,无需修改内核,直接使用真实硬件,性能接近宿主机)。容器虚拟化技术如LXC和Docker则与主机虚拟化不同,主机虚拟化特点包括:

Docker的介绍

  • 应用程序运行环境的强隔离
  • 虚拟机操作系统与底层操作系统无关
  • 虚拟机内部操作不会影响物理机
  • 拥有操作系统会占用部署资源及存储
  • 网络传输效率低
  • 应用程序调用硬件时响应用户访问时间延迟大

容器虚拟化特点包括:

Docker的介绍

  • 实现应用程序的隔离
  • 直接使用物理机的操作系统
  • 可以快速响应用户请求
  • 不占用部署时间,占用少量磁盘空间

然而,容器虚拟化也存在学习成本增加、操作控制复杂、网络控制与主机虚拟化不同、服务治理等缺点。

容器技术的发展始于2008年的LXC,它是首套完整的容器管理解决方案,无需任何补丁即可直接运行在Linux内核上,但管理和创建容器较为缓慢且不便于迁移。2013年,Docker在LXC基础上发展起来,dotCloud公司基于此构建了一套容器管理生态系统,包括容器镜像、注册表、RESTful API及命令行操作界面。Docker版本演变包括2017年前的1.7、1.8、1.9、1.10、1.11、1.12、1.13版本,以及2017年3月1日后的商业开源版本Docker-CE和Docker-EE(17-03-ce、17-06-ce、18-03-ce、18-06-ce、18-09-ce、19.03-ce等)。

二、Docker概述

Docker的介绍

Docker是一个开源项目,起源于2013年初,最初是dotCloud公司内部的一个业余项目,用Go语言实现。随后项目加入Linux基金会,遵循Apache 2.0协议,代码在GitHub上维护。

Docker自开源以来受到广泛关注,dotCloud公司因此更名为Docker Inc。Redhat在其RHEL6.5中支持Docker,Google也在其PaaS产品中广泛应用。

Docker的目标是实现轻量级的操作系统虚拟化解决方案,基于Linux容器(LXC)技术。Docker对LXC进行了进一步封装,使得用户无需关心容器的管理,操作变得更加简便。用户操作Docker容器就像操作一个快速轻量级的虚拟机一样简单。

智谱清言 - 免费全能的AI助手
智谱清言 - 免费全能的AI助手

智谱清言 - 免费全能的AI助手

智谱清言 - 免费全能的AI助手 2
查看详情 智谱清言 - 免费全能的AI助手

作为一种新兴的虚拟化方式,Docker相较传统虚拟化方式具有众多优势。首先,Docker容器的启动可以在秒级完成,远快于传统虚拟机。其次,Docker对系统资源的利用率高,一台主机上可以同时运行数千个Docker容器。容器仅运行应用本身,几乎不消耗额外系统资源,确保高性能和低系统开销。传统虚拟机需要为每个应用启动一个虚拟机,而Docker只需启动多个隔离的应用。

具体来说,Docker在以下几个方面具有显著优势:

  • 更快速的交付和部署:开发和运维人员希望一次创建或配置可以在任意地方正常运行。开发者可以使用标准镜像构建开发容器,运维人员可直接使用该容器部署代码。Docker能快速创建容器,快速迭代应用程序,并使整个过程可见,方便团队成员理解应用程序的创建和工作方式。Docker容器轻便快速,启动时间为秒级,大幅节约开发、测试、部署时间。
  • 更高效的虚拟化:Docker容器运行无需额外的hypervisor支持,是内核级虚拟化,实现更高性能和效率。
  • 更轻松的迁移和扩展:Docker容器几乎可以在任何平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性使用户可以将应用程序从一个平台直接迁移到另一个平台。
  • 更简单的管理:使用Docker,只需小幅修改即可替代大量更新工作。所有修改以增量方式分发和更新,实现自动化和高效管理。

与传统虚拟机相比:

特性 容器 虚拟机 启动 秒级 分钟级 硬盘使用 一般为MB 一般为GB 性能 接近原生 弱于 系统支持量 单机支持上千个容器 一般几十个

Docker的基本架构采用C/S架构,包括客户端和服务端。Docker daemon作为服务端接受来自客户端的请求,并处理这些请求(如创建、运行、分发容器)。客户端和服务端既可以在一台机器上运行,也可以通过socket或RESTful API进行通信。

Docker的介绍

Docker daemon通常在宿主机后台运行,等待接收来自客户端的消息。Docker客户端为用户提供一系列可执行命令,用户通过这些命令与Docker daemon交互。

容器、镜像、仓库、daemon、client之间的关系如下:

Docker的介绍

三、Docker的名字空间

名字空间是Linux内核的一个强大特性。每个容器都有自己独立的名字空间,运行在其中的应用就像在独立的操作系统中运行一样。名字空间确保容器之间彼此互不影响。

Docker的介绍

  • pid名字空间:通过pid名字空间隔离不同用户的进程,不同名字空间中可以有相同的pid。所有LXC进程在Docker中的父进程为Docker进程,每个LXC进程具有不同的名字空间。由于允许嵌套,可以方便地实现嵌套的Docker容器。
  • net名字空间:通过net名字空间实现网络隔离,每个net名字空间有独立的网络设备、IP地址、路由表、/proc/net目录。Docker默认使用veth方式,将容器中的虚拟网卡与host上的Docker网桥docker0连接在一起。
  • ipc名字空间:容器中的进程交互采用Linux常见的进程间交互方法(interprocess communication - IPC),包括信号量、消息队列和共享内存等。与VM不同,容器的进程间交互实际上还是host上具有相同pid名字空间中的进程间交互,因此在IPC资源申请时需要加入名字空间信息,每个IPC资源有一个唯一的32位id。
  • mnt名字空间:类似chroot,将一个进程放到一个特定的目录执行。mnt名字空间允许不同名字空间的进程看到的文件结构不同,从而隔离每个名字空间中进程所看到的文件目录。与chroot不同,每个名字空间中的容器在/proc/mounts的信息只包含所在名字空间的mount point。
  • uts名字空间:UTS(“UNIX Time-sharing System”)名字空间允许每个容器拥有独立的hostname和domain name,使其在网络上可以被视作一个独立的节点而非主机上的一个进程。
  • user名字空间:每个容器可以有不同的用户和组id,即可以在容器内使用容器内部的用户执行程序而非主机上的用户。

以上就是Docker的介绍的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号