Docker 不再难懂:快速掌握容器命令与架构原理
1. Docker 是容器技术的一种
容器(Container)概述
容器(Container)是一种轻量级的虚拟化技术,它将应用程序及其所有依赖环境打包在一个独立的、可移植的运行时环境中。容器通过操作系统级的虚拟化提供隔离,使得应用程序在不同的环境中具有一致的运行效果。与传统的虚拟机相比,容器启动速度更快,资源开销更低,因而在微服务架构和持续集成/持续部署(CI/CD)等场景中得到了广泛应用。
Docker 简介
Docker 是容器技术中的一种实现,它是一个开源平台,能够自动化应用程序的部署、扩展和管理。它通过使用操作系统级虚拟化(如 Linux 内核的 cgroups 和 namespaces)来实现容器的轻量级运行。Docker 的出现简化了容器的使用,方便开发、测试和生产环境之间的迁移。
2. Docker 的组件
-
Docker Client(客户端):
- 用户与 Docker 交互的接口。客户端接受用户的命令并将其转发给 Docker Daemon 处理。用户通过命令行工具(
docker命令)或 Docker API 与 Docker Client 交互。
- 用户与 Docker 交互的接口。客户端接受用户的命令并将其转发给 Docker Daemon 处理。用户通过命令行工具(
-
Docker Daemon(守护进程):
- 守护进程负责管理所有容器、镜像、网络和存储等资源。Docker Daemon 监听来自 Docker 客户端的请求,并通过 API 处理容器的生命周期,管理 Docker 镜像、网络等资源。
- Daemon 通常是运行在服务器上的后台进程,使用命令
dockerd启动。
-
Container Runtime(容器运行时):
- 负责从容器镜像启动容器并确保容器能够正常运行。容器运行时包含一系列的工具和库,能够管理容器的生命周期、资源隔离等。
- Docker 使用的容器运行时是 Docker Engine,内部使用
containerd作为容器生命周期管理工具,runc则是执行容器的运行时引擎。
-
containerd:
- 是一个独立的、高度模块化的容器运行时,负责容器的创建、调度、运行和销毁。它本身并不执行容器的运行,而是通过
runc来启动容器。
- 是一个独立的、高度模块化的容器运行时,负责容器的创建、调度、运行和销毁。它本身并不执行容器的运行,而是通过
-
runc:
runc是容器运行时的低级别组件,它直接与 Linux 内核交互,负责容器的生命周期管理,包括创建、启动、停止容器等。
-
Docker Registry(镜像仓库):
- 是存储和分发 Docker 镜像的地方。镜像可以是公开的,也可以是私有的。常见的公共 Registry 包括 Docker Hub、Google Container Registry、Harbor 等。通过 Docker Registry,用户可以下载镜像并上传自己的镜像。
3. Docker 常用命令
1. docker pull
用于从远程 Docker 镜像仓库(如 Docker Hub)拉取镜像。
docker pull [OPTIONS] IMAGE
- OPTIONS:
-a,--all-tags:拉取镜像的所有标签(tags)。--disable-content-trust:禁用内容信任,拉取镜像时跳过签名验证。-q,--quiet:仅输出镜像 ID。
示例:
docker pull ubuntu:20.04
该命令会从 Docker Hub 上拉取名为 ubuntu,标签为 20.04 的镜像。
2. docker run
用于创建并启动一个新容器。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- OPTIONS:
-d,--detach:后台运行容器。-it:以交互模式启动容器,并分配伪终端。-p,--publish:将容器的端口映射到主机端口。例如,-p 8080:80会将主机的 8080 端口映射到容器的 80 端口。--name:指定容器名称,便于识别和管理。-v,--volume:挂载主机目录或数据卷到容器。--rm:容器退出后自动删除容器。
示例:
docker run -d -p 8080:80 --name mynginx nginx
该命令将在后台运行一个基于 nginx 镜像的容器,并将主机的 8080 端口映射到容器的 80 端口。
3. docker start 和 docker stop
- docker start:启动已停止的容器。
docker start [OPTIONS] CONTAINER [CONTAINER...]
- docker stop:停止正在运行的容器。
docker stop [OPTIONS] CONTAINER [CONTAINER...]
示例:
docker start mynginx
docker stop mynginx
4. docker commit
当你在容器中做了一些更改,并希望将这些更改保存下来时,可以使用 docker commit 将容器的当前状态保存为新的镜像。
docker commit [OPTIONS] CONTAINER IMAGE
- OPTIONS:
-a,--author:指定作者信息。-m,--message:提交时附加的说明。-p,--pause:在提交时暂停容器。
示例:
docker commit -m "Updated config" mynginx mynginx:v2
将名为 mynginx 的容器状态保存为一个新镜像 mynginx:v2,并附加注释 "Updated config"。
5. docker save
用于将本地镜像保存为一个 tar 文件,便于传输或备份。
docker save [OPTIONS] IMAGE [IMAGE...]
- OPTIONS:
-o,--output:指定保存文件的路径。
示例:
docker save -o mynginx.tar mynginx
将 mynginx 镜像保存为 mynginx.tar 文件。
6. docker load
从 tar 文件加载镜像到本地 Docker 环境。
docker load [OPTIONS]
- OPTIONS:
-i,--input:指定加载镜像的文件路径。
示例:
docker load -i mynginx.tar
从 mynginx.tar 文件加载镜像。
总结
Docker 是容器技术的一个流行实现,极大地简化了应用的构建、打包、分发和运行。通过 Docker 的客户端、守护进程、容器运行时、镜像仓库等组件,用户可以轻松管理容器化的应用程序。熟悉 Docker 的常用命令和参数,能够帮助开发人员和运维人员更高效地使用 Docker 进行容器管理。
相关文章:
Docker 不再难懂:快速掌握容器命令与架构原理
1. Docker 是容器技术的一种 容器(Container)概述 容器(Container)是一种轻量级的虚拟化技术,它将应用程序及其所有依赖环境打包在一个独立的、可移植的运行时环境中。容器通过操作系统级的虚拟化提供隔离࿰…...
取消票证会把指定的票证从数据库中删除,同时也会把票证和航班 等相关表中的关联关系一起删除。但在删除之前,它会先检查当前用户是否拥有这张票
在做航班智能客服问答系统时会遇到取消票证的场景,这里涉及数据库的操作时会把指定的票证从数据库中删除,同时也会把票证和航班等相关表中的关联关系一起删除。但在删除之前,需要先检查当前用户是否拥有这张票,只有票主才有权限取…...
力扣-贪心-763 划分字母区间
思路 先统计字符串中每一个字母出现的最后下标,然后从end初始化为第一个字母出现的最后下标,在i<end时,不断更新end,因为一旦囊括新的字母就最起码要遍历到新字母出现的最后下标,在i>end时,说明遍历…...
【Redis 原理】网络模型
文章目录 用户空间 && 内核空间阻塞IO非阻塞IO信号驱动IO异步IOIO多路复用selectpollepoll Web服务流程Redis 网络模型Redis单线程网络模型的整个流程Redis多线程网络模型的整个流程 用户空间 && 内核空间 为了避免用户应用导致冲突甚至内核崩溃,用…...
cpp中的继承
一、继承概念 在cpp中,封装、继承、多态是面向对象的三大特性。这里的继承就是允许已经存在的类(也就是基类)的基础上创建新类(派生类或者子类),从而实现代码的复用。 如上图所示,Person是基类&…...
DeepSeek全栈接入指南:从零到生产环境的深度实践
第一章:DeepSeek技术体系全景解析 1.1 认知DeepSeek技术生态 DeepSeek作为新一代人工智能技术平台,构建了覆盖算法开发、模型训练、服务部署的全链路技术栈。其核心能力体现在: 1.1.1 多模态智能引擎 自然语言处理:支持文本生成(NLG)、语义理解(NLU)、情感分析等计算…...
CSS 真的会阻塞文档解析吗?
在网页开发领域,一个常见的疑问是 CSS 是否会阻塞文档解析。理解这一问题对于优化网页性能、提升用户体验至关重要。要深入解答这个问题,需要从浏览器渲染网页的原理说起。 浏览器渲染网页的基本流程 浏览器在接收到 HTML 文档后,会依次进行…...
大模型的UI自动化:Cline 使用Playwright MCP Server完成测试
大模型的UI自动化:Cline 使用Playwright MCP Server完成测试 MCP MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。 最近…...
碰撞检测 | 图解凸多边形分离轴定理(附ROS C++可视化)
目录 0 专栏介绍1 凸多边形碰撞检测2 多边形判凸算法3 分离轴定理(SAT)4 算法仿真与可视化4.1 核心算法4.2 仿真实验 0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战,包括:曲线…...
Python 基本数据类型
目录 1. 字符串(String) 2. 列表(List) 3. 字典(Dictionary) 4. 集合(Set) 5. 数字(Number) 6. 布尔值(Boolean) 1. 字符串&…...
突破“第一崇拜“:五维心理重构之路
一、视频介绍 在这个崇尚"第一"的时代,我们如何找到自己的独特价值?本视频将带您踏上五维心理重构之旅,从诗意人生的角度探讨如何突破"圣人之下皆蝼蚁"的局限。我们将穿越人生的不同阶段,从青春的意气风发到…...
KubeKey一键安装部署k8s集群和KubeSphere详细教程
目录 一、KubeKey简介 二、k8s集群KubeSphere安装 集群规划 硬件要求 Kubernetes支持版本 操作系统要求 SSH免密登录 配置集群时钟 所有节点安装依赖 安装docker DNS要求 存储要求 下载 KubeKey 验证KubeKey 配置集群文件 安装集群 验证命令 登录页面 一、Ku…...
UE5网络通信架构解析
文章目录 前言一、客户端-服务器架构(C/S Model)二、对等网络架构(P2P,非原生支持)三、混合架构(自定义扩展)四、UE5网络核心机制 前言 UE5的网络通信主要基于客户端-服务器(C/S&am…...
实验3 知识表示与推理
实验3 知识表示与推理 一、实验目的 (1)掌握知识和知识表示的基本概念,理解其在AI中的深刻含义与意义; (2)熟悉AI中常用的知识表示方法的优缺点及其应用场景; (3)掌握产…...
基于Springboot银行信用卡额度管理系统【附源码】
基于Springboot银行信用卡额度管理系统 效果如下: 系统登陆页面 用户个人中心页面 新增信用卡申请页面 评估审核页面 管理员主页面 评估审核页面 操作日志管理页面 消费页面 研究背景 随着金融行业的快速发展和信息技术的不断进步,信用卡作为一种便捷…...
达梦数据库学习笔记@1
目录 达梦数据库学习笔记一、表空间管理(一)默认表空间(二)相关数据字典(三)表空间操作(四)临时表空间管理 二、重做日志管理(一)系统视图(二&…...
图像处理篇---图像处理中常见参数
文章目录 前言一、分贝(dB)的原理1.公式 二、峰值信噪比(PSNR, Peak Signal-to-Noise Ratio)1.用途2.公式3.示例 三、信噪比(SNR, Signal-to-Noise Ratio)1.用途2.公式3.示例 四、动态范围(Dyna…...
AI Agent实战:打造京东广告主的超级助手 | 京东零售技术实践
前言 自2022年末ChatGPT的问世,大语言模型(LLM)技术引发全球关注。在大模型技术落地的最佳实践中,智能体(Agent)架构显现出巨大潜力,成为业界的普遍共识,各大公司也纷纷启动Agent技…...
50周学习go语言:第1周 环境搭建
以下是为零基础学习者准备的详细第1周教程,包含环境搭建、工具配置和首个Go程序的完整操作指南: 一、Go语言环境安装(Windows/macOS/Linux通用) 1. 下载安装包 官网地址:https://go.dev/dl//根据系统选择对应版本&am…...
4. MySQL 逻辑架构说明
4. MySQL 逻辑架构说明 文章目录 4. MySQL 逻辑架构说明1. 逻辑架构剖析1.1 服务器处理客户端请求1.2 Connectors(连接器)1.3 第1层:连接层1.4 第2层:服务层1.5 第3层:引擎层1.6 存储层 2. SQL执行流程2.1 MySQL 中的 SQL 执行流程 2.2 MySQL…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
