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…...
自建 code-server vs CloudStudio:为什么插件不能用?
# 自建 code-server vs CloudStudio:为什么插件不能用?## 问题背景办公室有一台 Lubuntu 电脑,安装了 code-server,通过内网穿透在家的浏览器可以正常访问和使用。但是有两个问题:- CodeBuddy 插件无法使用- MySQL 插件…...
Windows卸载工具横向对比:极客卸载为何能脱颖而出
Windows平台的软件卸载需求催生了众多卸载工具。 面对琳琅满目的选择,用户往往难以判断哪款工具最适合自己。 本文将从多个维度对比极客卸载与其他主流方案,为读者提供客观的选择参考。 Windows系统自带的程序卸载功能是最基础的解决方案。 它通过调用软…...
【AGI营销效能白皮书】:基于178家实测企业的A/B测试数据,揭示高转化率广告生成的3个隐性阈值
第一章:AGI营销效能白皮书核心洞察与方法论总览 2026奇点智能技术大会(https://ml-summit.org) 本章系统呈现AGI驱动的营销效能跃迁底层逻辑,聚焦可验证、可复用、可度量的实践范式。区别于传统AI营销工具的单点优化,AGI营销效能框架以目标…...
别再死记模块了!一张图看懂AUTOSAR CAN信号流:普通、诊断、XCP、NM报文到底怎么走?
AUTOSAR CAN信号流全景解析:从报文属性到配置落地的完整逻辑链 在汽车电子开发领域,AUTOSAR架构下的CAN通信配置一直是工程师们面临的难点之一。许多开发者虽然熟悉各个独立模块的功能,但当面对实际项目配置时,却常常陷入"只…...
RKMEDIA VO图层实战:从DRM基础到双屏叠加配置
1. DRM基础与屏幕检测入门 在RK平台开发中,显示系统是整个交互体验的核心。我刚开始接触RV1126开发板时,第一件事就是确认屏幕能否正常点亮。这里不得不提modetest这个神器——它是DRM(Direct Rendering Manager)子系统提供的调试…...
崩坏星穹铁道三月七助手:解放双手的终极游戏效率伙伴
崩坏星穹铁道三月七助手:解放双手的终极游戏效率伙伴 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 你是否厌倦了每天重复刷材料、清体力的枯燥操作&…...
Ubuntu 16.04下解决‘software-properties-common’依赖地狱:从Python3缺失到Shell环境修复的完整排雷记录
Ubuntu 16.04依赖问题深度解析:从Python3缺失到系统环境修复 当你在Ubuntu 16.04上执行sudo apt-get install software-properties-common时,可能会遇到一系列令人头疼的依赖问题。这不仅仅是简单的软件包缺失,而往往反映了更深层次的系统环境…...
Android Studio Layout Inspector 保姆级使用指南:从进程选取到设计图对比,一个功能都不落
Android Studio Layout Inspector 全功能实战手册:从基础操作到高级调试技巧 在Android应用开发过程中,UI布局的调试和优化占据了开发者大量时间。Layout Inspector作为Android Studio内置的强大工具,远不止是一个简单的视图查看器ÿ…...
从STC8G1K08A到SG90舵机:一个宿舍断电关灯器的硬件选型与避坑全记录
STC8G1K08A与SG90舵机的实战融合:智能断电关灯器的硬件设计精要 深夜被突如其来的灯光惊醒,这种体验对于宿舍生活的学生来说再熟悉不过。传统机械开关在断电后无法自动复位的问题,催生了一个有趣的硬件项目——基于STC8G1K08A单片机和SG90舵机…...
OpenSfM实战调优:如何通过修改config.yaml提升三维重建精度与速度(以Model House数据集为例)
OpenSfM实战调优:通过config.yaml精准控制三维重建质量与效率 当你的OpenSfM项目已经能够跑通基础流程,却在重建质量或运行速度上遇到瓶颈时,真正的挑战才刚刚开始。Model House这类包含丰富纹理但结构复杂的数据集,往往能暴露出参…...
