原来这个东西叫 Docker

news2024/11/24 4:59:28

大家好,我是徒手敲代码。

今天来聊聊 Docker

Docker Logo (PNG e SVG) Download Vetorial Transparente

三个时代的演变

首先要先了解 Docker 出现的背景。在计算机技术的发展历程中,我们经历了从物理机时代到虚拟机时代,再到容器化时代的演变。

物理机时代,应用程序直接运行在物理服务器上,每个应用程序需要独立的硬件资源。这种方式不仅成本高,而且资源利用率低,维护和管理也非常复杂。

为了提高资源利用率,虚拟化技术应运而生。虚拟机允许在同一物理服务器上,运行多个虚拟服务器,每个虚拟机都有自己的操作系统和应用程序。尽管虚拟化技术提高了资源利用率并简化了管理,但虚拟机仍然需要大量的系统资源,每个虚拟机的启动时间也相对较长。

后来,容器化技术的出现,解决了虚拟化技术的痛点。容器化技术允许在同一操作系统内核上运行多个隔离的用户空间实例,即容器。每个容器包含应用程序及其所有依赖项。容器化技术的出现解决了资源占用大、启动慢、管理复杂等问题。

Docker 的发展历程

2010年,在美国旧金山,一家名为 dotCloud 的初创企业诞生,它后来开发出了Docker这一革命性技术,引领了容器技术的风潮。

Docker 的前世今生 - 哈喽沃德先生的个人空间 - OSCHINA - 中文开源技术交流社区

Docker 的前世今生 - 哈喽沃德先生的个人空间 - OSCHINA - 中文开源技术交流社区

起初,Docker 是作为 dotCloud 内部的核心技术存在,但随后公司决定将其简化并标准化,冠以 “Docker” 之名,并配上标志性的鲸鱼图标向公众推出。

2013年,dotCloud 做出重大决策,将 Docker 开源,这一举动迅速吸引了全球工程师的目光,他们被 Docker 的高效与便捷所吸引,使其一跃成为最热门的开源项目之一。

Docker之所以能够迅速走红,核心在于它的轻量化特性。在此之前,虚拟机技术,尤其是 VMware 和 OpenStack,主导着市场。

虚拟机允许用户在一个操作系统内安装软件来创建多个独立运行环境,每个环境都能如同独立计算机一样运行应用程序。然而,虚拟机的缺点也很明显:资源消耗大、启动慢且需要较大的存储空间。

相比之下,Docker为代表的容器技术提供了轻量级的解决方案。它不需要复制整个操作系统,仅需创建一个小型、独立的运行环境(类似于沙盒),因此启动速度快、资源占用低,能够在单台主机上同时运行成千上万个容器。此外,Docker镜像体积小,通常仅为 MB 或 KB级别,远小于 GB 级别的虚拟机镜像。

Docker 的流行可以用两个核心理念来概括:“构建、运输、运行(Build, Ship and Run)”和“构建一次,到处运行(Build once,Run anywhere)”。具体来说:

  • 构建阶段,创建的是包含应用及其依赖、配置的不可变镜像,就像装载货物的标准化集装箱;

  • 运输则是指镜像可以在宿主机和镜像仓库(如Docker Hub这样的中央仓库)间便捷地传输;

  • 运行阶段,镜像被执行变为一个动态的容器,即应用的实际运行环境。

Docker 镜像本身是一种特殊的文件系统,它封装了应用程序运行所需的所有静态内容,确保了环境一致性。而 Docker Registry 服务则扮演着关键角色,负责存储和分发这些镜像,其中 Docker Hub 是最知名的公共镜像仓库,它维护着大量官方认证的高质量镜像,确保了镜像的安全性和可靠性。(国内使用 Docker 的话,就不要用 Docker Hub啦,用国内的镜像仓库吧)

简而言之,Docker通过其高效的构建、运输、运行模型,以及轻量级的容器化方案,彻底改变了软件开发和部署的格局,使得开发者能够更加灵活、高效地在不同环境中部署应用。

应用场景

Docker 的应用场景主要是以下这几个方面:

  1. 统一开发与生产环境:以往,开发、测试、生产环境的差异,比如应用服务端口在开发时为8080,生产环境却为80,可能导致配置错乱。Docker的引入确保了应用内部配置一致性,尽管容器外暴露端口可变,但这并不干扰应用的顺利部署与运行,加速了环境一致性的确立及部署流程。

  2. 缩减运营开销:传统部署伴随耗时的环境搭建与依赖问题。Docker利用镜像技术,将代码及其所需环境封装为单一镜像,仅需上传至容器即刻启动,大幅度缩短了软件部署周期。

  3. 增强PaaS平台效能:Docker使得单台物理服务器能够承载多份轻量级容器,这种架构显著提高了资源利用效率与运行速度。

  4. 环境隔离促进并行开发:借助Docker容器技术,开发者在同一硬件基础设施上能建立多个独立的运行环境,便于并行进行新应用的测试与开发,同时确保现有应用不受干扰,促进了开发和测试的高效协同。

  5. 自动化CI/CD流程:Docker容器无缝集成至持续集成(CI)与持续交付(CD)流程中,自动化这些关键环节,加速软件从开发到部署的每一步。

  6. 简化大规模部署与运维:凭借快速部署能力、可复制度及易管理性,Docker成为大规模应用部署与维护的理想工具,它使管理员能够高效管控复杂的应用群集。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1847326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精准测试与传统的手工测试

大部分测试从业人员都经历了手工测试到自动化测试递进,测试技术及思路都发生了日新月异的变化,有些中厂及大厂都有一套强大且复杂的自动化测试用例时刻保障产品的稳定性及正确性。 所谓精准测试,就是借助一定的技术手段、通过算法的辅助对传…

游戏遇到攻击有什么办法能解决?

随着网络技术的飞速发展,游戏行业在迎来繁荣的同时,也面临着日益严峻的网络威胁。黑客攻击、数据泄露、DDoS攻击等安全事件频发,给游戏服务器带来了极大的挑战。面对愈演愈烈的网络威胁,寻找一个能解决游戏行业攻击问题的安全解决…

【Matlab】CNN-LSTM分类 卷积神经网络-长短期记忆神经网络组合模型(附代码)

资源下载: https://download.csdn.net/download/vvoennvv/89466499 分类算法资源合集:https://download.csdn.net/download/vvoennvv/89466519 目录 Matlab SVM支持向量机分类算法 Matlab RF随机森林分类算法 Matlab RBF径向基神经网络分类算法 Ma…

容器之事件盒

代码&#xff1a; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>static void label_const(GtkWidget *eventbox) {static int i 0;static char citem[100];sprintf(citem, &quo…

OrangePi连接Wi-Fi步骤

下面介绍的是用终端命令行的方式配置WIFI&#xff1a; 首先输入以下命令用于扫描并查看周围的WiFi热点。也可以直接连接。 nmcli dev wifi之后会在终端打出周围所有可以连接的WiFi&#xff0c;按方向键上下可以查看显示更多&#xff0c;按q键退出。 然后同样使用nmcli命令连接…

Java中setLineWrap(true)和setWrapStyleWord(true)优化TextArea

在 Java Swing 开发中&#xff0c;JTextArea 是一个多行的文本区域组件&#xff0c;常用于显示和编辑大量文本。当处理长文本时&#xff0c;默认行为是不换行并且出现水平滚动条&#xff0c;这通常会降低用户体验。幸运的是&#xff0c;JTextArea 提供了两个非常有用的方法&…

解决Few-shot问题的两大方法:元学习与微调

基于元学习&#xff08;Meta-Learning&#xff09;的方法&#xff1a; Few-shot问题或称为Few-shot学习是希望能通过少量的标注数据实现对图像的分类&#xff0c;是元学习(Meta-Learning)的一种。 Few-shot学习&#xff0c;不是为了学习、识别训练集上的数据&#xff0c;泛化…

【面试题分享】重现 string.h 库常用的函数

文章目录 【面试题分享】重现 string.h 库常用的函数一、字符串复制1. strcpy&#xff08;复制字符串直到遇到 null 终止符&#xff09;2. strncpy&#xff08;复制固定长度的字符串&#xff09; 二、字符串连接1. strcat&#xff08;将一个字符串连接到另一个字符串的末尾&…

小程序 获取插件用户openpid?

接口英文名 getPluginOpenPId 功能描述 通过 wx.pluginLogin 接口获得插件用户标志凭证 code 后传到开发者服务器&#xff0c;开发者服务器调用此接口换取插件用户的唯一标识 openpid。 调用方式 HTTPS 调用 第三方调用 调用方式以及出入参和HTTPS相同&#xff0c;仅是调…

慢阻肺患者为何容易营养不良?朗格力教你轻松改善

#肺科营养#朗格力#班古营养#复合营养素#肺部营养#肺部健康# 慢阻肺是我国常见的、高患病率的慢性呼吸系统疾病,会对肺结构和功能产生影响,从而引起各种不良反应,其中营养不良是常见并发症之一。慢阻肺为什么会发生营养不良?营养不良又是怎么伤害慢阻肺的呢?为什么像班古精准…

深度学习之绘图基础

文章目录 1.实验目的2. 需求3.代码结果图片 1.实验目的 熟练绘制各种图像&#xff0c;为深度学习打基础 2. 需求 给定一个函数&#xff0c;需要你画出原图像以及这个函数在某点切线图像 3.代码 # File: python绘制函数图像以及倒数图像.py # Author: chen_song # Time: 20…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的测试用例执行计划(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 https://app5938.acapp.acwing.com.cn/contest/2/problem/OD…

【尚庭公寓SpringBoot + Vue 项目实战】移动端浏览历史(二十二)

【尚庭公寓SpringBoot Vue 项目实战】移动端浏览历史&#xff08;二十二&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】移动端浏览历史&#xff08;二十二&#xff09;1、业务介绍2.接口开发2.1.分页查询浏览历史列表2.2.保存浏览历史 1、业务介绍 浏览历史指的…

暴雨讲堂|通往AGI的必由之路—AI agent是什么?

在三月份英伟达的新品发布会上&#xff0c;黄仁勋反复提及一个词汇— Generalist Embodied Agent&#xff0c;意为“通用具身智能体”&#xff0c;给观众留下了深刻的印象。其实具身智能指的是不同形态的拥有主动感知交互能力的机器人。其实&#xff0c;业界对它还有一个更为熟…

【读论文】Learning perturbations to explain time series predictions

文章目录 Abstract1. Introduction2. Background Work3. Method4. Experiments4.1 Hidden Markov model experiment4.2 MIMIC-III experiment 5. ConclusionReferences 论文地址&#xff1a;Learning Perturbations to Explain Time Series Predictions代码地址&#xff1a;htt…

python中进程的几种创建方式

在新创建的子进程中&#xff0c;会把父进程的所有信息复制一份&#xff0c;它们之间的数据互不影响。 1.使用os.fork()创建 该方式只能用于Unix/Linux操作系统中&#xff0c;在windows不能用。 import os# 注意&#xff0c;fork函数&#xff0c;只在Unix/Linux/Mac上运行&am…

Webpack4从入门到精通以及和webpack5对比_webpack现在用的是哪个版本

3.1 打包样式资源css-loader、style-loader… {// 匹配哪些文件test: /\.less$/,// 使用哪些loader进行处理use: [// use数组中loader执行顺序&#xff1a;从右到左&#xff0c;从下到上&#xff0c;依次执行(先执行css-loader)// style-loader&#xff1a;创建style标签&#…

艺术创作加速器:三款AI绘画软件,让你的工作效率倍增!

在数字化浪潮的推动下&#xff0c;艺术创作正迎来革命性的变化。AI绘画软件的出现&#xff0c;不仅为艺术家提供了全新的创作工具&#xff0c;也为艺术爱好者开辟了一片创意的新天地。这些软件利用人工智能技术&#xff0c;根据用户的简单描述或草图&#xff0c;快速生成独特的…

Vector 例题

例题一&#xff1a; 下面这个代码输出的是( ) &#xfeff;#include <iostream> #include <vector> using namespace std; int main(void) { vector<int>array; array.push_back(100); array.push_back(300); array.push_back(300); array.push_back(300); a…

探索图神经网络(GNN):使用Python实现你的GNN模型

一、引言 图神经网络&#xff08;Graph Neural Network, GNN&#xff09;作为近年来机器学习和深度学习领域的热门话题&#xff0c;正逐渐吸引越来越多的研究者和开发者的关注。GNN能够处理图结构数据&#xff0c;在社交网络分析、推荐系统、化学分子结构预测等领域有着广泛的…