当前位置:首页 > 技术 > 正文内容

Docker 镜像与容器的核心概念及操作对比

访客 技术 2026年9月4日 1

使用 Docker 时,可通过以下命令基于镜像启动并进入交互式容器:

docker run -it --privileged --entrypoint bash <image_name>

若已有镜像,可直接以后台模式运行容器:

docker run -d --name my_flask_app -p 5000:5000 flask_app:v1

其中 my_flask_app 是容器名称,flask_app:v1 是指定的镜像名称。

镜像命名规则

  • 主体名称:用于标识镜像本身。
  • 仓库地址(可选):通常为 Docker Hub 或私有仓库地址。
  • 格式[registry/]<repository>[:<tag>]

标签(Tag)说明

  • 用于区分镜像的不同版本或变体。
  • 若未显式指定,默认使用 latest 标签。

镜像与容器的本质区别

特性 Docker 镜像 Docker 容器
本质 只读模板,包含运行所需文件和元数据 镜像的运行实例,具有可写层和隔离环境
状态 静态、不可变 动态、可启停、内部状态可变
存储结构 由多个只读层通过联合文件系统叠加而成 在镜像只读层之上增加一个可写容器层
创建方式 docker build 基于 Dockerfile docker run 从镜像启动,支持多实例
持久性 独立存在,删除容器不影响镜像 停止后默认丢失可写层数据(需挂载卷持久化)
类比 面向对象中的"类"或 ISO 安装镜像 "对象"实例或已安装并运行的操作系统

常用操作命令对照

命令 作用对象 说明
docker build -t app-image . 镜像 基于当前目录的 Dockerfile 构建名为 app-image 的镜像
docker run -d --name app-instance app-image 容器 app-image 启动名为 app-instance 的后台容器
docker rmi app-image 镜像 删除镜像(需确保无关联容器存在)
docker rm app-instance 容器 删除容器及其可写层数据

镜像与容器的关系类比

镜像如同虚拟机模板(如 .vmx 文件),是只读、分层且静态的;容器则是该模板启动后的运行实例,具备可写状态和生命周期。

导出容器 vs 导出镜像

特性 docker export(导出容器) docker save(导出镜像)
命令示例 docker export my_container > app_snapshot.tar docker save -o app_image.tar app-image:v1
导出内容 容器当前文件系统的扁平快照,不含历史层或元数据 完整的镜像分层结构及所有元数据(如 ENTRYPOINT、ENV、标签等)
主要用途 快速迁移或备份运行时状态(如开发调试环境) 离线分发或备份完整镜像(适用于部署到无网络环境)
重新导入 docker import app_snapshot.tar new-image:dev(生成新扁平镜像) docker load -i app_image.tar(还原原始镜像及标签)
类比 整机硬盘克隆 未拆封的乐高套装(含说明书和所有零件)
标签: Docker容器化

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。