Docker之简介

发布时间 - 2025-07-13 00:00:00    点击率:

docker简介

1、是什么

1.1、问题:为什么会有Docker出现

产品从开发到上线,需要经过操作系统、运行环境、应用配置等多个环节。开发和运维团队需要协作处理这些复杂的问题,尤其是在版本迭代和环境兼容性方面对运维人员提出了挑战。Docker之所以迅速发展,正是因为它提供了一个标准化的解决方案来应对这些问题。

环境配置复杂,换一台机器就需要重新配置,耗时费力。人们开始思考,能否从根本上解决这个问题,让软件能够携带环境进行安装?也就是说,在安装时,将原始环境完整复制过来。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。

过去在服务器上配置应用运行环境,需要安装各种软件,如Java、Tomcat、MySQL、JDBC驱动包等。这些配置不仅麻烦,还无法跨平台。如果在Windows上配置环境,到了Linux上又得重新配置。即使不跨操作系统,换另一台相同操作系统的服务器,移植应用也是非常困难的。

传统上认为,软件开发和测试完成后,产出的是程序或可编译执行的二进制字节码(以Java为例)。为了让这些程序顺利运行,开发团队需要准备完整的部署文件,供运维团队部署应用。开发团队需要明确告知运维团队所有的配置文件和软件环境。然而,即便如此,部署失败的情况仍然频繁发生。Docker镜像的设计打破了“程序即应用”的传统观念。通过镜像(images)将除操作系统核心外的所有应用运行环境打包,实现了应用在不同平台间的无缝运行。

1.2、Docker理念

Docker是基于Go语言实现的云开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,通过对应用组件的封装、分发、部署、运行等生命周期的管理,使得用户的APP(可以是一个WEB应用或数据库应用等)及其运行环境能够做到“一次封装,到处运行”。

Linux容器技术的出现解决了这个问题,而Docker是在其基础上发展起来的。将应用运行在Docker容器上,Docker容器在任何操作系统上都是一致的,实现了跨平台、跨服务器。只需一次配置好环境,换到别的机器上即可一键部署,大大简化了操作。

1.3、一句话解决了运行环境和配置问题

软件容器,方便进行持续集成并有助于整体发布的容器虚拟化技术。

2、能干嘛

2.1、之前的虚拟机技术

虚拟机(virtual machine)是一种带环境安装的解决方案。

它可以在一种操作系统内运行另一种操作系统,例如在Windows系统内运行Linux系统。应用程序对此毫无感知,因为虚拟机看起来与真实系统完全一致,而对于底层系统来说,虚拟机只是一个普通文件,不需要时可以删除,对其他部分毫无影响。这类虚拟机完美地运行了另一套系统,使应用程序、操作系统和硬件三者之间的逻辑保持不变。

虚拟机的缺点包括资源占用多、冗余步骤多、启动慢。

2.2、容器虚拟化技术

由于虚拟机存在这些缺点,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,简称LXC)。

Linux容器不模拟完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件运行所需的库资源和设置。系统因此变得高效轻量,并保证在任何环境中部署的软件都能始终如一地运行。

比较了Docker和传统虚拟化方式的不同之处:

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,然后在该系统上运行所需应用进程;而容器内的应用进程直接运行于宿主机的内核,容器内没有自己的内核,也没有进行硬件虚拟。因此,容器比传统虚拟机更为轻便。每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

2.3、开发/运维(DevOps)

一次构建、随处运行

更快速的应用交付和部署

传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。

更便捷的升级和扩缩容

随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。

更简单的系统运维

应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。

更高效的计算资源利用

Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。

3、去哪下

3.1、官网

Docker官网:https://www./link/e836b5ebd3143577c69cda6109cc209e

Docker中文网站:https://www./link/fadc9c1ef9cf923d5378fe28575ba385

3.2、仓库

Docker Hub官网: https://www./link/0fe53ab665b7845ea7be17becdd77850


# mysql  # linux  # docker  # windows  # 操作系统  # go语言  # tomcat  # ai  # 为什么  # Java  # 架构  # 封装  #  


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 简历没回改:利用AI润色让你的文字更专业  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何为不同团队 ID 动态生成多个非值班状态按钮  敲碗10年!Mac系列传将迎来「触控与联网」双革新  实现点击下箭头变上箭头来回切换的两种方法【推荐】  JS经典正则表达式笔试题汇总  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel中的Facade(门面)到底是什么原理  Laravel如何升级到最新版本?(升级指南和步骤)  大同网页,大同瑞慈医院官网?  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  EditPlus中的正则表达式 实战(2)  北京专业网站制作设计师招聘,北京白云观官方网站?  微信小程序 require机制详解及实例代码  如何挑选高效建站主机与优质域名?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何快速搭建支持数据库操作的智能建站平台?  Laravel怎么为数据库表字段添加索引以优化查询  如何在建站宝盒中设置产品搜索功能?  如何在服务器上配置二级域名建站?  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel Fortify是什么,和Jetstream有什么关系  Laravel怎么连接多个数据库_Laravel多数据库连接配置  原生JS实现图片轮播切换效果  Python文件异常处理策略_健壮性说明【指导】  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  如何获取免费开源的自助建站系统源码?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  如何在阿里云虚拟主机上快速搭建个人网站?  网站建设要注意的标准 促进网站用户好感度!  如何基于PHP生成高效IDC网络公司建站源码?  如何用好域名打造高点击率的自主建站?  js实现点击每个li节点,都弹出其文本值及修改  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  香港服务器租用每月最低只需15元?  网站制作企业,网站的banner和导航栏是指什么?  魔方云NAT建站如何实现端口转发?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  如何快速查询网址的建站时间与历史轨迹?  如何快速查询域名建站关键信息?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何用免费手机建站系统零基础打造专业网站?  Laravel如何发送系统通知?(Notification渠道示例)  香港网站服务器数量如何影响SEO优化效果?