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优化效果?

