【基础篇】Docker 架构与组件 TWO
嗨,小伙伴们!我是小竹笋,一名热爱创作的工程师。上一篇我们聊了聊 Docker 的历史与发展、与虚拟机的对比以及它在行业中的应用。今天,让我们更进一步,深入探讨 Docker 的架构与关键组件。
欢迎订阅公众号:JAVA和人工智能
🤝 Docker 客户端与服务端架构
想象一下,你正在用一台笔记本电脑通过网络连接到一台远端服务器上运行 Docker 容器。在这个过程中,你的笔记本电脑就是 Docker 客户端,而远端服务器则是 Docker 服务端。客户端和服务端之间通过 RESTful API 进行通信,这样就可以远程控制 Docker 容器啦!
提示:图片来自网络
💻 Docker Daemon、API 和 CLI
-
Docker Daemon: Docker Daemon 是服务端的核心组件,负责接收客户端发送过来的命令,并处理这些命令。你可以把它想象成是 Docker 的大脑,控制着一切。
-
Docker API: Docker Daemon 通过 Docker API 与客户端进行交互。API 提供了一种标准的方式来管理 Docker 容器,比如创建、运行和删除容器。
-
Docker CLI: Docker CLI(命令行接口)是客户端的组成部分,它提供了用户与 Docker Daemon 交互的方式。通过简单的命令,你就可以完成复杂的操作。
📦 Docker Registry 详解
Docker Registry 是用来存储 Docker 镜像的地方。它就像一个图书馆,里面存放着各种各样的书籍(镜像)。Docker 默认使用的公共镜像库叫做 Docker Hub,但是你也可以搭建自己的私有 Registry。
-
Docker Hub: 这是一个公开的注册表,任何人都可以上传和下载镜像。它就像是互联网上的公共图书馆,里面的书籍(镜像)可以被任何人免费阅读(使用)。
-
Private Registry: 私有 Registry 则像是公司的内部图书馆,只有特定的人才能访问。它可以部署在企业内部,用于安全地存储和分发镜像。
📝 Dockerfile 与镜像构建流程
-
Dockerfile: Dockerfile 是一个文本文件,包含了创建 Docker 镜像所需的指令。你可以把它想象成一份食谱,告诉 Docker 如何“烹饪”出一个镜像。
-
构建流程: 当你执行
docker build
命令时,Docker 会按照 Dockerfile 中的指令一步步构建镜像。这个过程就像是按照食谱一步一步做出一道美味的菜肴。 -
提示:图片来自网络
📝 实战演练:创建一个简单的 Dockerfile
# 使用官方的基础镜像作为起点
FROM alpine:latest# 设置工作目录
WORKDIR /app# 复制当前目录下的文件到容器的 /app 目录
COPY . /app# 安装必要的软件包
RUN apk add --no-cache curl# 指定容器启动时运行的命令
CMD ["curl", "-L", "http://example.com"]
-
FROM: 指定基础镜像。
-
WORKDIR: 设定工作目录。
-
COPY: 复制文件到容器。
-
RUN: 执行命令,这里安装了 curl。
-
CMD: 定义容器启动时执行的命令
接下来的一篇文章里,我们将深入探讨 Docker 的架构和主要组件。敬请期待
下期预告:
【基础篇】Docker 镜像管理 THREE!
-
Docker 客户端与服务端架构
-
Docker Daemon、Docker API 和 Docker CLI
-
Docker Registry 详解
-
Dockerfile 与镜像构建流程
参考资料:
-
Docker 官方网站:
-
https://www.docker.com/
-
Docker 官方文档 GitHub 仓库:
-
https://github.com/docker/docker.github.io
-
Docker 中文社区翻译项目:
-
https://github.com/docker-cn/docker-cn
📢 读者互动: 你是否已经在工作中使用了 Docker?欢迎在评论区分享你的使用体验或遇到的问题!
如果你觉得这篇文章对你有所帮助,请给我点个赞或者转发给你的朋友吧!👍
推荐阅读:
-
• Kubernetes 中文官网:
-
https://kubernetes.p2hp.com/#google_vignette
往期回顾:
-
【基础篇】Docker 概览 ONE
-
Elasticsearch简介
🌟 关注小竹笋,一起学习更多有趣的技术知识吧!
版权声明: 本文为原创作品,未经允许不得转载。
相关文章:

【基础篇】Docker 架构与组件 TWO
嗨,小伙伴们!我是小竹笋,一名热爱创作的工程师。上一篇我们聊了聊 Docker 的历史与发展、与虚拟机的对比以及它在行业中的应用。今天,让我们更进一步,深入探讨 Docker 的架构与关键组件。 欢迎订阅公众号:…...

03。正式拿捏ArkTS语言第一天
1, 打印日志命令 : console.log() 2, 三种基本数据类型: number 数字类型 (数字) string 字符串类型(例如:“我是字符串”) boolean 布尔类型 (true 或者 false) ***…...

【PyTorch][chapter 27][李宏毅深度学习][attention-3]
前言: 前面重点讲了self-attention, mulitHead self-attention. 目录: self-attention positional Encoding 语音处理例子 跟CNN区别 跟 RNN 区别 一 self-attention 回顾 优点 1 解决了长序列依赖问题 2 并行计算 缺点 1 开销变大 增加了 Q…...

java-数据结构与算法-02-数据结构-05-栈
文章目录 1. 栈1. 概述2. 链表实现3. 数组实现4. 应用 2. 习题E01. 有效的括号-Leetcode 20E02. 后缀表达式求值-Leetcode 120E03. 中缀表达式转后缀E04. 双栈模拟队列-Leetcode 232E05. 单队列模拟栈-Leetcode 225 1. 栈 1. 概述 计算机科学中,stack 是一种线性的…...
Python 管理依赖包(pip, virtualenv)
在Python编程中,管理依赖包是开发工作的重要组成部分。正确管理依赖包可以确保代码在不同环境中的一致性和可移植性,避免版本冲突和依赖地狱等问题。Python中常用的依赖包管理工具包括pip和virtualenv。 一、pip pip是Python官方推荐的包管理工具&…...
Bigdecimal 导出为excel时显示未0E-10,不是0,怎么解决
在使用 BigDecimal 导出到 Excel 时,如果遇到显示为 0E-10 而不是 0 的问题,这通常是因为 BigDecimal 对象的精度问题。0E-10 表示的是 0 乘以 10 的 -10 次方,这在数学上等同于…...

springboot项目从jdk8升级为jdk17过程记录
背景:公司有升级项目jdk的规划,计划从jdk8升级到jdk11 开始 首先配置本地的java_home 参考文档:Mac环境下切换JDK版本及不同的maven-CSDN博客 将pom.xml中jdk1.8相关的版本全部改为jdk17,主要是maven编译插件之类的,…...

list、tuple、set和dict传参机制
1、list、tuple、set和dict传参机制 # -------------list------------- def f1(my_list):print(f"②f1()my_list:{my_list} 地址是:{id(my_list)}") # ["tom","mary","hsp"] 0x1122my_list[0]"jack"print(f&quo…...

Redis快速入门基础
Redis入门 Redis是一个基于内存的 key-value 结构数据库。mysql是二维表的接口数据库 优点: 基于内存存储,读写性能高 适合存储热点数据(热点商品、资讯、新闻) 企业应用广泛 官网:https://redis.io 中文网:https://www.redis.net.cn/ Redis下载与…...
python基础介绍
这次的专题是关于python的知识点,加油! 文章目录 1 什么是计算机(1.1 哪些可以称为计算机?(以下)(1.2 计算机可以完成的工作有哪些?(1.3 一台计算机由什么构成? 2. 什么是编程(2.1 编…...

SSRF中伪协议学习
SSRF常用的伪协议 file:// 从文件系统中获取文件内容,如file:///etc/passwd dict:// 字典服务协议,访问字典资源,如 dict:///ip:6739/info: ftp:// 可用于网络端口扫描 sftp:// SSH文件传输协议或安全文件传输协议 ldap://轻量级目录访问协议 tftp:// 简单文件传输协议 gopher…...

Java | Leetcode Java题解之第284题窥视迭代器
题目: 题解: class PeekingIterator<E> implements Iterator<E> {private Iterator<E> iterator;private E nextElement;public PeekingIterator(Iterator<E> iterator) {this.iterator iterator;nextElement iterator.next(…...
哈尔滨等保定级的常见问题
一、哈尔滨等保测评定级标准理解问题 哈尔滨等保测评如何确定信息系统的安全保护等级? 信息系统的安全保护等级应根据其在国家安全、经济建设、社会生活中的重要程度,以及一旦遭到破坏后对国家安全、社会秩序、公共利益以及公民、法人和其他组织的合法权…...

springAOP理解及事务
AOP: springAOP是什么: AOP:Aspect Oriented Programming(面向切面编程、面向方面编程),其实就是面向特定方法编程。 使用场景: 比如你想统计业务中每个方法的执行耗时,那我们最…...

Optional类的使用 java8(附代码)
🍰 个人主页:_小白不加班__ 🍞文章有不合理的地方请各位大佬指正。 🍉文章不定期持续更新,如果我的文章对你有帮助➡️ 关注🙏🏻 点赞👍 收藏⭐️ 文章目录 一、什么是Optional?二、…...

企业利用AI智能名片S2B2C商城小程序参与社区团购的风险与机遇分析
摘要 在新零售浪潮的推动下,社区团购以其独特的商业模式迅速崛起,成为连接消费者与供应商的重要桥梁。企业纷纷探索如何有效利用这一新兴渠道,以扩大市场份额、提升品牌影响力。AI智能名片S2B2C商城小程序的引入,为企业参与社区团…...

全链路追踪 性能监控,GO 应用可观测全面升级
作者:古琦 01 介绍 随着 Kubernetes 和容器化技术的普及,Go 语言不仅在云原生基础组件领域广泛应用,也在各类业务场景中占据了重要地位。如今,越来越多的新兴业务选择 Golang 作为首选编程语言。得益于丰富的 RPC 框架ÿ…...
深入探索CSS3的Media Query:打造响应式网页设计的利器
在今天的互联网世界中,随着设备种类和屏幕尺寸的多样化,响应式网页设计(Responsive Web Design, RWD)已成为不可或缺的一部分。CSS3中的Media Query正是这一设计理念的实现利器,它允许开发者根据用户的设备特性和屏幕尺…...
DDD(Domain-Driven Design)领域驱动设计
在软件开发中,DDD(Domain-Driven Design,领域驱动设计)是一种方法论,它强调在开发过程中将业务领域的知识和规则作为核心。DDD的目标是通过理解和建模业务领域来创建更好的软件系统。本文将详细讲解DDD的基本概念、原则…...

基于k8s快速搭建docker镜像服务的demo
基于k8s快速搭建docker镜像服务的demo 一、环境准备 如标题,你需要环境中有和2个平台,并且服务器上也已经安装好docker服务 接下来我来构建一个docker镜像,然后使用harbork8s来快速部署服务demo 二、部署概述 使用docker构建镜像&#x…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...