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

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 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)是一种轻量级的虚拟化技术,它将应用程序及其所有依赖环境打包在一个独立的、可移植的运行时环境中。容器通过操作系统级的虚拟化提供隔离&#xff0…...

取消票证会把指定的票证从数据库中删除,同时也会把票证和航班 等相关表中的关联关系一起删除。但在删除之前,它会先检查当前用户是否拥有这张票

在做航班智能客服问答系统时会遇到取消票证的场景,这里涉及数据库的操作时会把指定的票证从数据库中删除,同时也会把票证和航班等相关表中的关联关系一起删除。但在删除之前,需要先检查当前用户是否拥有这张票,只有票主才有权限取…...

力扣-贪心-763 划分字母区间

思路 先统计字符串中每一个字母出现的最后下标&#xff0c;然后从end初始化为第一个字母出现的最后下标&#xff0c;在i<end时&#xff0c;不断更新end&#xff0c;因为一旦囊括新的字母就最起码要遍历到新字母出现的最后下标&#xff0c;在i>end时&#xff0c;说明遍历…...

【Redis 原理】网络模型

文章目录 用户空间 && 内核空间阻塞IO非阻塞IO信号驱动IO异步IOIO多路复用selectpollepoll Web服务流程Redis 网络模型Redis单线程网络模型的整个流程Redis多线程网络模型的整个流程 用户空间 && 内核空间 为了避免用户应用导致冲突甚至内核崩溃&#xff0c;用…...

cpp中的继承

一、继承概念 在cpp中&#xff0c;封装、继承、多态是面向对象的三大特性。这里的继承就是允许已经存在的类&#xff08;也就是基类&#xff09;的基础上创建新类&#xff08;派生类或者子类&#xff09;&#xff0c;从而实现代码的复用。 如上图所示&#xff0c;Person是基类&…...

DeepSeek全栈接入指南:从零到生产环境的深度实践

第一章:DeepSeek技术体系全景解析 1.1 认知DeepSeek技术生态 DeepSeek作为新一代人工智能技术平台,构建了覆盖算法开发、模型训练、服务部署的全链路技术栈。其核心能力体现在: 1.1.1 多模态智能引擎 自然语言处理:支持文本生成(NLG)、语义理解(NLU)、情感分析等计算…...

CSS 真的会阻塞文档解析吗?

在网页开发领域&#xff0c;一个常见的疑问是 CSS 是否会阻塞文档解析。理解这一问题对于优化网页性能、提升用户体验至关重要。要深入解答这个问题&#xff0c;需要从浏览器渲染网页的原理说起。 浏览器渲染网页的基本流程 浏览器在接收到 HTML 文档后&#xff0c;会依次进行…...

大模型的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 专栏介绍 &#x1f525;课设、毕设、创新竞赛必备&#xff01;&#x1f525;本专栏涉及更高阶的运动规划算法轨迹优化实战&#xff0c;包括&#xff1a;曲线…...

Python 基本数据类型

目录 1. 字符串&#xff08;String&#xff09; 2. 列表&#xff08;List&#xff09; 3. 字典&#xff08;Dictionary&#xff09; 4. 集合&#xff08;Set&#xff09; 5. 数字&#xff08;Number&#xff09; 6. 布尔值&#xff08;Boolean&#xff09; 1. 字符串&…...

突破“第一崇拜“:五维心理重构之路

一、视频介绍 在这个崇尚"第一"的时代&#xff0c;我们如何找到自己的独特价值&#xff1f;本视频将带您踏上五维心理重构之旅&#xff0c;从诗意人生的角度探讨如何突破"圣人之下皆蝼蚁"的局限。我们将穿越人生的不同阶段&#xff0c;从青春的意气风发到…...

KubeKey一键安装部署k8s集群和KubeSphere详细教程

目录 一、KubeKey简介 二、k8s集群KubeSphere安装 集群规划 硬件要求 Kubernetes支持版本 操作系统要求 SSH免密登录 配置集群时钟 所有节点安装依赖 安装docker DNS要求 存储要求 下载 KubeKey 验证KubeKey 配置集群文件 安装集群 验证命令 登录页面 一、Ku…...

UE5网络通信架构解析

文章目录 前言一、客户端-服务器架构&#xff08;C/S Model&#xff09;二、对等网络架构&#xff08;P2P&#xff0c;非原生支持&#xff09;三、混合架构&#xff08;自定义扩展&#xff09;四、UE5网络核心机制 前言 UE5的网络通信主要基于客户端-服务器&#xff08;C/S&am…...

实验3 知识表示与推理

实验3 知识表示与推理 一、实验目的 &#xff08;1&#xff09;掌握知识和知识表示的基本概念&#xff0c;理解其在AI中的深刻含义与意义&#xff1b; &#xff08;2&#xff09;熟悉AI中常用的知识表示方法的优缺点及其应用场景&#xff1b; &#xff08;3&#xff09;掌握产…...

基于Springboot银行信用卡额度管理系统【附源码】

基于Springboot银行信用卡额度管理系统 效果如下&#xff1a; 系统登陆页面 用户个人中心页面 新增信用卡申请页面 评估审核页面 管理员主页面 评估审核页面 操作日志管理页面 消费页面 研究背景 随着金融行业的快速发展和信息技术的不断进步&#xff0c;信用卡作为一种便捷…...

达梦数据库学习笔记@1

目录 达梦数据库学习笔记一、表空间管理&#xff08;一&#xff09;默认表空间&#xff08;二&#xff09;相关数据字典&#xff08;三&#xff09;表空间操作&#xff08;四&#xff09;临时表空间管理 二、重做日志管理&#xff08;一&#xff09;系统视图&#xff08;二&…...

图像处理篇---图像处理中常见参数

文章目录 前言一、分贝&#xff08;dB&#xff09;的原理1.公式 二、峰值信噪比&#xff08;PSNR, Peak Signal-to-Noise Ratio&#xff09;1.用途2.公式3.示例 三、信噪比&#xff08;SNR, Signal-to-Noise Ratio&#xff09;1.用途2.公式3.示例 四、动态范围&#xff08;Dyna…...

AI Agent实战:打造京东广告主的超级助手 | 京东零售技术实践

前言 自2022年末ChatGPT的问世&#xff0c;大语言模型&#xff08;LLM&#xff09;技术引发全球关注。在大模型技术落地的最佳实践中&#xff0c;智能体&#xff08;Agent&#xff09;架构显现出巨大潜力&#xff0c;成为业界的普遍共识&#xff0c;各大公司也纷纷启动Agent技…...

50周学习go语言:第1周 环境搭建

以下是为零基础学习者准备的详细第1周教程&#xff0c;包含环境搭建、工具配置和首个Go程序的完整操作指南&#xff1a; 一、Go语言环境安装&#xff08;Windows/macOS/Linux通用&#xff09; 1. 下载安装包 官网地址&#xff1a;https://go.dev/dl//根据系统选择对应版本&am…...

4. MySQL 逻辑架构说明

4. MySQL 逻辑架构说明 文章目录 4. MySQL 逻辑架构说明1. 逻辑架构剖析1.1 服务器处理客户端请求1.2 Connectors(连接器)1.3 第1层&#xff1a;连接层1.4 第2层&#xff1a;服务层1.5 第3层&#xff1a;引擎层1.6 存储层 2. SQL执行流程2.1 MySQL 中的 SQL 执行流程 2.2 MySQL…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...