第一章 初识Docker与容器

news/2024/11/8 8:50:22 标签: docker, 容器, 运维

1、Docker定义

Docker是基于Go语言实现的开源容器项目。诞生于2013年初,由dotCloud公司(后改名为 Docker Inc)发起。

Docker的构想是要实现“Build,Ship and Run Any App,Anywhere”,通过对应用的封装Packaging、分发 Distribution、部署 Deployment、运行 Runtime 生命周期进行管理,以达到应用组件级别的“一次封装,到处运行”。

Docker首次为应用的开发、运行和部署提供了“一站式”的实用解决方案。

Linux容器(Linux Containers,LXC)技术有效地将单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。

在LXC之前,早期的容器技术由于各种原因没有被很好的集成到主流的Linux内核中,使用起来并不方便。例如,如果用户想使用OpenVZ技术,需要先手动给操作系统打上特定的内核补丁方可使用,且不同版本并不一致。

LXC借鉴了前人成熟的容器设计理念,并基于一系列新引入的内核特性,实现了更具扩展性的虚拟化容器方案,并被集成到主流Linux内核中,成为Linux系统轻量级容器技术的事实标准。

在LXC的基础上,Docker进一步优化了容器的使用体验:1)提供了各种容器管理工具(分发、版本、移植等),让用户无需关注底层操作,更加简单地管理和使用容器;2)通过引入分层文件系统构建和高效的镜像机制,降低了迁移难度。

用户操作Docker容器就像操作应用本身一样简单。

早期的Docker代码实现是直接基于LXC的,后来随着版本更新,已替换掉了LXC的实现。

简单地讲,Docker容器可以理解为一种轻量级的沙盒(sandbox)。每个容器内运行着一个应用,不同的容器相互隔离,容器之间可以通过网络互相通信。

容器的创建和停止十分迅速,几乎跟创建和停止原生应用一致。很多时候,直接把容器当作应用本身也没有任何问题。

2、Docker的作用

在云时代,开发者创建的应用必须要能很方便的在网络上传播,即应用必须脱离底层物理硬件的限制;同时必须是“任何时间任何地点”可获取的。而这正是Docker所能提供的最大优势。

例如,常见的LAMP(Linux+Apache+MySQL+PHP)组合构建网站,一旦需要服务器迁移,往往需要对每个应用都进行重新部署和调试。因为这些应用都直接运行在底层操作系统上,无法保证同一个应用在不同的环境中行为一致。

Docker通过容器来打包应用、解耦应用和运行平台。迁移时,只需在新的服务器上启动需要的容器即可。

Docker具有以下几个方面的优势:

  • 更快速的交付和部署。开发完成后,测试和运维人员可以直接使用完全相同的环境来部署代码。
  • 更高效的资源利用。运行Docker不需要额外的虚拟化管理程序的支持,Docker是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。
  • 更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行。
  • 更简单的更新管理。使用Dockerfile,只需要小小的配置修改,就可以代替以往大量的更新操作。所有修改都以增量的方式被分发和更新,以实现自动化并且高效的容器管理。

与传统虚拟机相比,Docker具有以下优势:

  • Docker容器很快,启动和停止可以秒级实现,比传统虚拟机方式的数分钟要快得多。
  • Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器
  • Docker通过类似Git操作来方便用户获取、分发和更新应用镜像,存储复用增量更新
  • Docker通过Dockerfile支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程。

3、Docker与虚拟化

虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割障碍,使用户可以用比原本的组态更好的方式来应用这些资源。

虚拟化的核心是是对资源的抽象,目标往往是为了在同一个主机上运行多个系统或应用,从而提高系统资源的利用率,并且带来降低成本、方便管理和容错容灾等好处。

从大类上分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化,基于硬件的虚拟化技术不多见,也不是Docker技术所要讨论的范畴。基于软件的虚拟化技术可细分为以下几个分类。

Docker以及其他容器技术都属于操作系统虚拟化这个范畴,不需要额外的supervisor支持。Docker虚拟化方式之所以有众多的优势,跟操作系统虚拟化技术自身的设计和实现是分不开的。

传统虚拟化方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。

4、总结

本章介绍了虚拟化的基本概念、Docker的诞生历史,以及容器在云时代应用分发场景下的巨大优势。


http://www.niftyadmin.cn/n/5743621.html

相关文章

基于SSM框架的乡村农户对口扶贫系统

基于SSM框架的乡村农户对口扶贫系统。 设计步骤: 项目架构创建:首先创建项目的基本架构,包括com.zc.xxx路径下的文件和resources资源文件夹。 SSM架构:使用Spring、SpringMVC、MyBatis作为后端架构,采用POJO—Dao—…

【面试题】Hive 查询:如何查找用户连续三天登录的记录

1. 需求概述 在分析用户行为时,查询用户的连续登录数据是一个常见需求。例如,我们需要找出每个用户连续三天登录的记录。给定一个包含用户登录记录的表,我们需要对这些数据进行处理,提取出用户连续三天登录的日期。 2. 问题说明…

代码随想录算法训练营Day55 | 图论理论基础、深度优先搜索理论基础、卡玛网 98.所有可达路径、797. 所有可能的路径、广度优先搜索理论基础

目录 图论理论基础 深度优先搜索理论基础 卡玛网 98.所有可达路径 广度优先搜索理论基础 图论理论基础 图论理论基础 | 代码随想录 图的基本概念 图的种类 大体分为有向图和无向图。 图中的边有方向的是有向图: 图中的边没有方向的是无向图: 图…

ffmpeg 视频滤镜:屏蔽边框杂色- fillborders

滤镜描述 fillborders 官网链接 > FFmpeg Filters Documentation fillborders滤镜有几种方式帮你屏蔽边框的杂色、不好的图案。 滤镜使用 参数 left <int> ..FV.....T. set the left fill border (from 0 to INT_MAX) (default 0)right …

整合本地市场机会 同城小程序打造社区商圈

同城市场中&#xff0c;商家与消费者之间的互动和交易模式正在发生深刻变化&#xff0c;同城小程序成为了企业、商户和消费者之间连接的桥梁&#xff0c;成为打造社区商圈、整合本地市场机会的重要工具。今天小编分享&#xff0c;同城小程序怎么一个软件整合以前十几个APP做的事…

飞书API-获取tenant_access_token

1.在飞书工作台创建应用&#xff0c;跳到开发者后台&#xff0c;选创建企业自建应用 2.设置并发布应用 必须要发布应用才可以开始使用了&#xff01;&#xff01;&#xff01; 3.调用获取token的API 参考链接&#xff1a; 开发文档 - 飞书开放平台https://open.feishu.cn/do…

基于Java SpringBoot和Vue美容美发管理系统设计

摘要 基于Java SpringBoot和Vue的美容美发管理系统是一个现代化的应用程序&#xff0c;旨在为美容美发行业提供高效、智能的管理解决方案。该系统结合了Java SpringBoot的强大后端开发能力和Vue前端框架的灵活用户界面设计&#xff0c;实现了一个响应式、易于维护的全栈平台。…

RibbitMQ-安装

本文主要介绍RibbitMQ的安装 RabbitMQ依赖于Erlang&#xff0c;因此首先需要安装Erlang环境。分别下载erlang-26.2.5-1.el7.x86_64.rpm、rabbitmq-server-4.0.3-1.el8.noarch.rpm 官网地址&#xff1a;https://www.rabbitmq.com/ 官网文档&#xff1a;https://www.rabbitmq.c…