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…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...