作为一个之前从来没有接触过Docker的倒霉蛋,想了解学习一下Docker

搜了CSDN和RUNOOB,得到的描述如下:

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

 Docker 的应用场景

  • 微服务架构:每个服务独立容器化,便于管理和扩展。

  • CI/CD流水线:与 Jenkins/GitLab CI 集成,实现自动化构建和测试。

  • 开发环境标准化:新成员一键启动全套依赖服务(如数据库、消息队列)。

  • 云原生基础:Kubernetes 等编排工具基于 Docker 管理容器集群。

Docker是什么
是一个开源的应用容器引擎,基于go语言开发并遵循apache2.0协议开源
是在Linux容器里运行应用的开源工具
是一种轻量级的 “虚拟机”
Docker的容器技术,可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器
市场占有率最高                        
原文链接:https://blog.csdn.net/F12138X/article/details/140344339

但说实话,我读了这些很正式的“全网统一” 的概念性官方描述,关于Docker到底是什么东西,还是没有一个落地的认知,因为我很难理解“引擎”、“虚拟化”、“容器”。这很像是我不懂某个词的含义,我去查,查出来的解释里面有三个我不懂含义的词。

于是我尝试得出一个最简单的结论:Docker是一个管打包的,或者我们暂且用“封装”来理解

比方这样一个场景:

有个项目,有前端angular环境、后端python环境、又依赖数据库,又引用外置的三方库包DLL

这时候新来了一个项目成员,我要给他配置搭建环境

于是我花了一个下午的时间,把什么node.js、python3.7、lib/DLL都拷到他电脑上装好,启动的时候又出了一些状况,修修改改,终于是能启动了,可以让他看代码然后尝试开发。搞得汗流浃背

但如果后面再进新人,每一个我都折腾这么半天,效率实在是低

如果有一种技术可以把我们所需要的所有环境、依赖、配置都统一打包封装好,到时候由机器按照流程去做这个搭建,那就很爽了

哎,这就是docker要干的事

于是我们引入三个Docker中的核心概念:镜像(Image),容器(Container),仓库(Repository)

上面说到,我们可以通过Docker,把app运行需要的所有内容(代码、库文件、环境变量、配置文件)都打包封装好,这个过程生成出来的东西,叫做镜像

我们通过指令来告知docker如何进行打包封装,指令集我们放在Dockerfile当中

到了镜像这里,app就已经是可移植的啦,把镜像拿到其他目标环境当中,再进行实例化,就得到了容器。容器是镜像的运行实例,是一个轻量级、可移植的执行环境。我们的一个镜像可以拿到多个地方,生成多个容器,完成app的移植

那么这个镜像是如何转移的呢,我们自然可以像拷贝代码一样将镜像一份一份拷贝,也可以像git一样通过仓库来完成代码的上传和下载。也就是说,docker也是有仓库的。

我们可以通过注册个人docker仓库,将自己的镜像上传,供以下载使用

同时呢,docker也有很多官方仓库,里面放了一些标准通用的环境,比如说各个版本的操作系统,各个版本的Nginx,各个版本的python等等。我们也可以在这些docker已经准备好的环境基础上再定制自己的镜像

【Rigistry:仓库注册服务器,如Docker Hub】

【Repository:具体的镜像仓库,如nginx、mysql】

至此,关于docker的基本核心概念,就有一个大概准确的了解了,再回头看文章开头的那些描述,也更好理解他们在叽里咕噜表达什么了。

这里还有一个误区,不是只有那一整套环境、代码、依赖才叫容器,他们确实是一个大的容器,但是事实上,比方说数据库MySQL,后端python,前端angular,他们可以是在大容器中包含的几个小容器,容器之间是可以进行数据通信的。不要像我之前一样把容器理解的太狭隘了

关于docker命令,我准备放在后面和linux命令合并在同一篇来写

 

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ std::list概念与使用案例

C std::list 概念详解 std::list 是 C 标准模板库(STL)中的一个双向链表容器。与 vector 和 array 不同,它不保证元素在内存中连续存储,而是通过指针将各个元素连接起来。 核心特性 双向链表结构: 每个元素包含指向前驱…

从0到1学Pandas(六):Pandas 与数据库交互

目录一、数据库基础操作1.1 连接数据库1.2 执行 SQL 查询1.3 创建与修改表结构二、数据导入导出2.1 从数据库读取数据2.2 将数据写入数据库2.3 大数据量处理三、数据库事务处理3.1 事务概念与实现3.2 批量数据更新3.3 错误处理与回滚四、数据库性能优化4.1 查询性能优化4.2 连接…

GitHub 趋势日报 (2025年07月26日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图602Qwen3-Coder573neko527hrms275BillionMail153Win11Debloat115hyperswitch57data…

机器人仿真(2)Ubuntu24.04下RTX5090配置IsaacSim与IsaacLab

目录 一、前言二、电脑配置三、配置步骤3.1 创建Conda环境3.2 安装PyTorch3.3 安装Isaac Sim3.4 安装Isaac Lab 四、总结 一、前言 博主自从去年开始就一直在关注Isaac Lab和Isaac Sim,但是一直以来由于手头设备只有4060,甚至没有达到最低配置16GB显存要…

DaVinci Resolve 19.0(达芬奇)软件安装包下载及详细安装教程|附带安装文件

[软件名称]:ArcGIS [软件大小]:2.99 GB [系统要求]:支持Win7及更高版本 [下载通道]: 迅雷网盘 [下载链接]:高速下载地址 https://pan.xunlei.com/s/VOW9nw-JV99A_7f_5hhpgqO2A1?pwdbufh# ⚠️:先用手机下载迅雷网盘保存到手机中&#xff0c…

Java学习第八十一部分——Shiro

目录 📫 一、前言提要简介 🛡️ 二、核心功能介绍 ⚙️ 三、核心架构组件 ☕ 四、与Java的关系 ⚖️ 五、与Spring Security对比 🧩 六、典型应用场景 💎 七、总结归纳概述 📫 一、前言提要简介 Apache Shiro 是…

虚拟机ubuntu20.04共享安装文件夹

ubuntu20.04共享安装文件夹 4.5 共享安装文件夹 将Windows存放安装文件的文件夹共享给虚拟机,如下图操作:如果是在ubuntu20.04中,还需要以下的操作: sudo mkdir /mnt/hgfs 此命令无效 sudo echo ‘vmhgfs-fuse /mnt/hgfs fu…

如何查看电脑后门IP和流量?

你是否也有以下经历?深夜,你的电脑风扇突然狂转,屏幕却一片寂静;每月流量莫名超标,账单高得离谱;鼠标偶尔不听使唤…这些可能不是电脑“闹脾气”,如何一探究竟? 想象一下&#xff1a…

分类预测 | MATLAB基于四种先进的优化策略改进蜣螂优化算法(IDBO)的SVM多分类预测

分类预测 | MATLAB基于四种先进的优化策略改进蜣螂优化算法(IDBO)的SVM多分类预测 目录分类预测 | MATLAB基于四种先进的优化策略改进蜣螂优化算法(IDBO)的SVM多分类预测分类效果基本介绍多策略量子自适应螺旋搜索算法研究摘要1. 引言1.1 研究背景1.2 研究意义1.3 研究目标2. 文…

Android 修改系统时间源码阅读

链接:XRefAndroid - Support Android 16.0 & OpenHarmony 5.0 (AndroidXRef/AospXRef) 这里看的Android 10的代码,选中Android 10,勾选所有工程,搜索DateTimeSettings‌: 看到showTimePicker应该是显示一个设置时…

关于自定义域和 GitHub Pages(Windows)

GitHub Pages 支持使用自定义域,或将站点 URL 的根目录从默认值(例如 )更改为您拥有的任何域,比如octocat.github.io。 谁可以使用此功能? GitHub Pages 在公共存储库中提供 GitHub Free 和 GitHub Free for organizations,在公共和私有存储库中提供 GitHub Pro、GitHub …

自动驾驶领域中的Python机器学习

数据预处理与特征工程 在自动驾驶系统中,数据是驱动决策的核心。从传感器(如摄像头、激光雷达、毫米波雷达)收集的原始数据通常包含噪声、缺失值和异常值,需要进行系统的预处理。Python的pandas库提供了强大的数据处理能力&#x…

PROFINET转CAN通讯协议转换速通汽车制造

在汽车系统领域之外,控制器局域网(CAN)总线技术亦广泛应用于多种工业环境。其固有的稳健性、可靠性与灵活性,使其成为工业自动化及控制系统中设备间通信的理想选择。CAN 总线技术在工业应用中的关键领域包括机器控制、传感器网络以…

影刀RPA_小红书笔记批量采集_源码解读

一、项目简介本项目是一个基于影刀RPA的小红书笔记批量采集工具,能够通过两种模式获取小红书平台的软文数据:搜索内容抓取和自定义链接抓取。工具使用Chrome浏览器自动化技术,实现了从网页数据采集、解析到Excel导出的完整流程。支持获取笔记…

以使命为帆,结业是重新出发的号角

站在私教班结业典礼的讲台上,望着眼前一张张闪烁着力量的面孔,我心中始终萦绕着一个信念:所有的相遇,都是为了共同奔赴一件更有意义的事。今天不是终点,而是 “使命的启程”—— 我们因不甘而相聚:不甘心行…

java测试题(下)

1. Spring 核心概念1.1 如何理解 Spring DI?DI(依赖注入) 是 IoC(控制反转) 的具体实现方式,由 Spring 容器在运行时通过以下方式自动注入依赖:构造器注入(推荐)Setter 注…

LC振荡Multisim仿真

电路图:说明:点击仿真后,先打开S1,可以看到C1的充电曲线。当电容充满电后,关闭S1,打开S2,这时候,C2电容会快速获得C1一半的电量。如果没有L,曲线会变得很陡。如果只加入电…

五、Web开发

文章目录1. SpringMVC自动配置概览2. 简单功能分析2.1 静态资源访问2.1.1 静态资源目录2.1.2 静态资源访问前缀2.1.3 webjar2.2 欢迎页支持2.3 自定义 Favicon2.4 静态资源配置原理2.4.1 配置类只有一个有参构造器2.4.2 资源处理的默认规则2.4.3 欢迎页的处理规则2.4.4 favicon…

Mysql 二进制安装常见问题

1. mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory在centos9中升级了libncurses.so的版本为libncurses.so.6,所以找不到libncurses.so.5需要使用软连接指向libncurses.so.6ln -s /lib6…

OpenLayers 综合案例-点位聚合

看过的知识不等于学会。唯有用心总结、系统记录,并通过温故知新反复实践,才能真正掌握一二 作为一名摸爬滚打三年的前端开发,开源社区给了我饭碗,我也将所学的知识体系回馈给大家,助你少走弯路! OpenLayers…