当前位置: 首页 > article >正文

Docker学习笔记:基础知识

本文是自己的学习笔记


  • 1、什么是Docker
  • 2、Docker的架构设计
    • 2.1、镜像(Image)
    • 2.2、容器(Container)
    • 2.3、仓库(Repository)
    • 2.4、Docker使用场景案例

1、什么是Docker

Docker是基于Go语言实现的云开源项目。它的角色是作为应用和环境的中间层,对应用屏蔽环境的变化,使应用的部署步骤,变量等不会随着环境的变化而变化。让App做到build anywhere and anytime。

所以Docker类似于Java虚拟机,让开发者不用操心操作系统的细节,只需要生产.class文件交给虚拟机就可以在任何操作系统上运行Java。

不过Docker比虚拟机更方便和轻巧。

虚拟机本质上是虚拟出一套硬件,然后在其之上运行一个完整的操作系统,并在系统上再运行所需应用进程。

而Docker则不虚拟硬件,直接使用操作系统的内核,不需要花时间虚拟硬件和要求操作系统划出运行空间。那不同的应用只需要持有App本身的代码和相关的依赖,然后放入Docker容器中。多个应用就对应着多个Docker容器,这些容器共享OS的内核。整个过程更轻便占用更少的资源。

比如下图就是四个App放到四个Docker容器中,共同运行在一个机器上。他们共享内核资源但是又各自拥有自己的文件系统,所以容器之间互不打扰。
在这里插入图片描述

2、Docker的架构设计

在这里插入图片描述

从上图可以看出,Docker主要分成三个部分,客户端,服务器和注册中心。

Host中有容器(Container),和镜像(Images)。

2.1、镜像(Image)

镜像是一个非常核心的概念。它可以看成是一个打包好的软件应用模具,我们可以利用它快速创建多个应用实例运行到容器中,如同模具一般一按即成型。

它包含着一个应用启动所需要的一起,比如应用程序代码,所需要的依赖,环境变量和配置等。

镜像就是Docker移植性高的关键。它被设计成平台无关,这意味着我们可以在任何安装了Docker的机器上通过同一个镜像快速启动多个应用实例,而不用担心在我机器上能运行在你机器上就不能的问题。

需要注意镜像是只读类型的文件,一旦创建就不可修改。必须修改就只能创建一个新的镜像。

2.2、容器(Container)

容器容的是应用实例。每个容器只能运行一个应用实例。

它可以被启动,开始,停止等。每个容器都相互隔离。

容器都是由镜像创建的,一个镜像可以创建多个容器。

2.3、仓库(Repository)

仓库是集中存放镜像文件的场所。

仓库和仓库注册服务器(Registry)是有区别的。仓库注册服务骑上存放着多个仓库,而每个仓库有包含了多个镜像,每个镜像有不同的标签做区分。通常标签就是版本号。

仓库也分为公开查看和私有仓库。

最大的公开库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云,网易云等。

公司或者团队内部可以创建一个内部公开的Docker仓库。然后先创建一个基础镜像(例如,一个包含特定操作系统、运行时和常用工具的基础镜像),并将其推送到公有仓库。其他团队成员可以基于这个基础镜像进一步构建自己的应用镜像,从而确保开发、测试和生产环境的一致性。

2.4、Docker使用场景案例

  1. 开发人员 A 编写应用程序代码,并创建一个 Dockerfile 来定义如何构建该应用程序的 Docker 镜像。
  2. 开发人员 A 使用 docker build 命令构建镜像,并通过 docker tag 命令给镜像打上版本标签(例如 myorg/myapp:1.0.0)。
  3. 开发人员 A 使用 docker push 命令将镜像推送到团队的公有 Docker 仓库(私有仓库)。
  4. CI/CD 系统 检测到代码更新,自动触发镜像的构建和推送流程,确保仓库中的镜像始终是最新且符合规范的。
  5. 开发人员 B 需要在本地运行或测试应用程序,他只需使用 docker pull myorg/myapp:1.0.0 命令从仓库中拉取镜像。
  6. 测试人员 可以拉取特定版本的镜像,并在测试环境中进行验证。
  7. 运维人员 可以从仓库中拉取通过测试的稳定版镜像,并将其部署到生产服务器上。
  8. 如果应用程序需要更新,开发人员会重复上述过程,将新版本的镜像推送到仓库,并更新版本标签。

通过这种方式,公有 Docker 仓库成为了团队协作的枢纽,极大地提高了开发、测试和部署的效率和一致性。

相关文章:

Docker学习笔记:基础知识

本文是自己的学习笔记 1、什么是Docker2、Docker的架构设计2.1、镜像(Image)2.2、容器(Container)2.3、仓库(Repository)2.4、Docker使用场景案例 1、什么是Docker Docker是基于Go语言实现的云开源项目。它的角色是作…...

5.2 初识Spark Streaming

在本节实战中,我们初步探索了Spark Streaming,它是Spark的流式数据处理子框架,具备高吞吐量、可伸缩性和强容错能力。我们了解了Spark Streaming的基本概念和运行原理,并通过两个案例演示了如何利用Spark Streaming实现词频统计。…...

uv:一个现代化的 Python 依赖管理工具

在 Python 的生态系统中,依赖管理和 Python 版本管理一直是开发者关注的核心问题。传统的工具如 pip、poetry 和 pyenv 虽然功能强大,但在性能和使用体验上仍有改进空间。uv 是由 Python 核心开发者开发的 现代化依赖管理工具,旨在提供更快、…...

Python趣学篇:交互式词云生成器(jieba + Tkinter + WordCloud等)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、为什么要做词云?让文字"活"起来!二、核心…...

理解解释器架构:原理、组成与运行机制全解析

目录 前言1. 什么是解释器架构2. 解释器的基本组成2.1 被解释执行的程序2.2 解释器引擎2.3 解释器内部状态2.4 程序执行的当前状态2.5 存储器模型 3. 解释器的工作原理3.1 解析源代码3.2 初始化运行环境3.3 逐条执行语法结构3.4 维护程序状态3.5 内存管理与变量作用域 4. 举例&…...

2025华为OD机试真题+全流程解析+备考攻略+经验分享+Java/python/JavaScript/C++/C/GO六种语言最佳实现

华为OD全流程解析,备考攻略 快捷目录 华为OD全流程解析,备考攻略一、什么是华为OD?二、什么是华为OD机试?三、华为OD面试流程四、华为OD薪资待遇及职级体系五、ABCDE卷类型及特点六、题型与考点七、机试备考策略八、薪资与转正九、…...

Python应用for循环临时变量作用域

大家好!如果你刚开始学习Python,可能会对for循环中临时变量的作用域感到好奇。下面通过一个简单的练习,帮助你理解这个概念。 代码呈现: i 0 for i in range(5):print(i)print(i)代码介绍: 首先我们初始化变量i 0然后进入for循环,这里i成为…...

设计模式——桥接设计模式(结构型)

摘要 桥接设计模式是一种结构型设计模式,用于将抽象与实现解耦,使二者可以独立变化。它通过将一个类拆分为“抽象”和“实现”两部分,并通过桥接关系组合,避免了类继承层次结构过于庞大。桥接模式包含抽象类、扩充抽象类、实现类…...

LLaDa——基于 Diffusion 的大语言模型 打平 LLama 3

这里分享一篇文章《Large Language Diffusion Models》,来自人民大学高领人工智能学院,一篇尝试改变传统自回归范(预测下一个token) LLM 架构,探索扩散模型在 LLM 上的作用,通过随机掩码-预测逆向思维&…...

Apache SeaTunnel部署技术详解:模式选择、技巧与最佳实践

Apache SeaTunnel(原Waterdrop)作为高性能、分布式数据集成平台,支持海量数据的离线与实时同步。其灵活多样的部署模式可适配不同规模的生产环境需求。本文将系统解析SeaTunnel的部署架构、技术要点及最佳实践,帮助用户高效构建稳…...

2. 数据结构基本概念 (2)

本文部分ppt、视频截图来自:[青岛大学-王卓老师的个人空间-王卓老师个人主页-哔哩哔哩视频] 1. 数据结构基本概念 1.1 数据类型和抽象数据类型 (1) 数据类型(Data Type) 概念 数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。 在使用…...

鸿蒙5.0+ 多协议设备发现与分布式软总线技术实践

一、技术演进与架构升级 1.1 多协议发现机制演进 鸿蒙5.0重构设备发现层,支持​​三模异构发现​​: ​​经典蓝牙​​(BLE 5.2):低功耗设备发现​​Wi-Fi Aware​​:高带宽设备预连接​​PLC&#xff0…...

STM32F407寄存器操作(多通道单ADC+DMA)

1.前言 又是半年没更新了,趁着端午放假有点时间,并且最近项目要用这块知识,我就顺带研究一下ADC吧。 一般来说ADC主要用法包含了1.单通道软件触发(这是最简单和最常用的用法)2.单通道多次采集(需要快速采…...

基于React和TypeScript的金融市场模拟器开发与模式分析

基于React和TypeScript的金融市场模拟器开发与模式分析 项目概述 本项目开发了一个基于React和TypeScript的金融市场模拟器,通过模拟订单流和价格发现机制,重现了真实市场的动态特性。该模拟器不仅提供了实时价格图表、订单簿和交易功能,还…...

剑指offer13_剪绳子

剪绳子 给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为 k[1]、k[2]、……、k[m]。 k[1]k[2]…k[m] 可能的最大乘积是多少? 例如当绳子的长度是 8 时&#xff0…...

reverse_ssh 建立反向 SSH 连接指南 混淆AV [好东西哟]

目录 🌐 工具简介 ⚙️ 前提条件 攻击主机 (Linux) 目标主机 (Windows) 📋 详细步骤 步骤 1:安装 Go 环境 步骤 2:安装必要依赖 步骤 3:下载并编译 reverse_ssh 步骤 4:配置密钥 步骤 5&#xff…...

vue+elementUi+axios实现分页(MyBatis、Servlet)

vueelementUiaxios实现分页 文章目录 vueelementUiaxios实现分页1.代码实现【HTML】**【Servlet层】****【Service层】****【Dao层】** 2.总结步骤3.实现要点4.注意事项4.注意事项 注:此项目 前端为 html、 后端采用 mybatis、servlet实现 1.代码实现 【HTML】…...

WebBuilder数据库:企业数据管理的能力引擎

在数据成为核心生产要素的时代,企业对数据库的需求早已超越“存储与查询”的基础功能,转而追求高性能、高安全、高兼容与高效开发的综合能力。WebBuilder作为企业级快速开发平台的佼佼者,其数据库能力正式破解数据管理难题的关键钥匙。本文将…...

QtWidgets,QtCore,QtGui

目录 三者的关系示例代码主要功能模块QtCore**一、核心功能与常用类****1. 信号与槽机制(Signals and Slots)****2. 事件处理(Event Handling)****3. 定时器(Timers)****4. 线程(Threading)****5. 文件与目录操作****6. 属性系统(Property System)****二、高级特性**…...

lvs-keepalived高可用群集

目录 1.Keepalived 概述及安装 1.1 Keepalived 的热备方式 1.2 keepalived的安装与服务控制 (1)安装keep alived (2)控制 Keepalived 服务DNF 安装 keepalived 后,执行以下命令将keepalived 服务设置为开机启动。 2.使用 Keepalived 实现双机热备 …...

【Elasticsearch】suggest

在Elasticsearch中,suggest 是一个非常强大的功能,用于实现自动补全、拼写纠错和模糊搜索等功能。它可以帮助用户更快地找到他们想要的内容,同时提升搜索体验。以下是关于 suggest 的详细使用方法和常见场景。 1\. Suggest 的基本概念 sugges…...

高速收发器

一、高速收发器 1.FPGA高速收发器:GTP,GTX,GTH,GTZ 2.每个Quad有4对高速收发器GT(4个TX和4个RX)和一个COmmon 3.走差分,提高抗干扰性 4.CPLL是每个lane私有的,QPLL是整个Quad的所有通道共享的 5.每个MGT的bank有两对差分参考时钟 6.CPLL的时钟…...

webpack的安装及其后序部分

npm install原理 这个其实就是npm从registry下载项目到本地,没有什么好说的 值得一提的是npm的缓存机制,如果多个项目都需要同一个版本的axios,每一次重新从registry中拉取的成本过大,所以会有缓存,如果缓存里有这个…...

如何利用自动生成文档工具打造出色的技术文档

文章目录 每日一句正能量前言一、自动生成文档工具的优势(一)提高效率(二)保持一致性(三)实时更新 二、常见的自动生成文档工具(一)Sphinx(二)Javadoc&#x…...

读《Go语言圣经记录》(二):深入理解Go语言的程序结构

读《Go语言圣经记录》(二):深入理解Go语言的程序结构 在编程的世界里,Go语言以其简洁、高效和强大的并发能力而备受开发者青睐。今天,我将带大家深入探索Go语言的程序结构,通过详细解读《Go语言圣经》中的…...

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.7 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.7 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图&#xff0c;等值线图。 dataframe <-data.frame…...

nacos Sentinel zipkin docker运行

服务注册发现 分布配置中⼼nacos dockerdocker pull nacos/nacos-server:1.3.2docker run -d --name nacos-server -p 8848:8848 -e MODEstandalone nacos/nacos-server:1.3.2访问 http://localhost:8848/nacos 服务限流降级&#xff1a;Sentinel docker docker pul…...

OpenCv高阶(二十)——dlib脸部轮廓绘制

文章目录 一、人脸面部轮廓绘制代码实现1、定义绘制直线段的函数2、定义绘制凸包轮廓的函数3、读取输入图像4、初始化dlib的人脸检测器5、使用检测器在图像中检测人脸&#xff08;参数0表示不进行图像缩放&#xff09;6、加载dlib的68点人脸关键点预测模型7、遍历检测到的每个人…...

pikachu靶场通关笔记08 XSS关卡04-DOM型XSS

目录 一、XSS原理 二、DOM型XSS 三、源码分析 1、进入靶场 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关&#xff09;渗透集合&#xff0c;通过对XSS关卡源码的代码审计找到XSS风…...

python集成inotify-rsync实现跨服务器文件同步

1、实现功能 通过结合 Python 的 watchdog 库&#xff08;类似 Linux 的 inotify 机制&#xff09;和 rsync 命令&#xff0c;实现了文件系统变化的实时监控和增量同步。下面详细解释其工作原理和运行方式&#xff1a; 2、核心工作原理 2.1、文件监控 使用watchdog库监控源目…...