尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
《Docker 镜像、容器、仓库一张图讲清楚》
Docker 镜像、容器、仓库一张图讲清楚很多初学者刚接触 Docker 时会被三个词绕晕镜像Image、容器Container、仓库Registry/Repository。它们看起来都和“装东西”有关但职责完全不同。这篇文章用一张关系图配合比喻和实战命令帮你一次性理清。一、先记住一句话镜像只读模板相当于“类”或“安装包”。容器镜像跑起来的实例相当于“对象”或“正在运行的程序”。仓库存放镜像的地方相当于“应用商店”或“远程代码库”。用程序员熟悉的比喻Docker 概念面向对象比喻生活比喻镜像类Class盖房子的图纸容器对象Instance按图纸盖好的房子仓库远程仓库图纸仓库 / 应用商店二、一张图看懂三者关系docker builddocker rundocker commitdocker pushdocker pulldocker exec 修改Dockerfile镜像 Image容器 Container仓库 Registry这张图说明了完整闭环写Dockerfile用docker build构建出镜像。用docker run把镜像启动成容器。容器里可以修改文件、安装软件。用docker commit可以把容器当前状态保存成新镜像。用docker push把镜像推到仓库。在其他机器上用docker pull从仓库拉取镜像。仓库内部还有层级关系Registry 仓库服务Namespace 命名空间/用户Repository 镜像仓库Tag: latestTag: v1.0Tag: v2.0比如nginx:latestnginx是 Repository镜像仓库名latest是 Tag标签完整写法可能是docker.io/library/nginx:latest三、镜像一切从模板开始镜像是只读的它包含一个精简的操作系统文件系统应用运行所需的依赖、库、配置启动命令、环境变量、暴露端口等元数据镜像采用分层存储。比如nginx:latest ├── Layer 1: Debian 基础层 ├── Layer 2: 安装 nginx 依赖 ├── Layer 3: 拷贝 nginx 配置 └── Layer 4: 设置启动命令多层可以复用所以多个镜像共享基础层时磁盘占用不会成倍增加。常用命令dockerimages# 查看本地镜像dockerpull nginx:latest# 从仓库拉取镜像dockerrmi nginx:latest# 删除本地镜像dockerinspect nginx:latest# 查看镜像详情四、容器镜像跑起来容器 镜像 可写层 运行时配置。当你执行dockerrun-d--namemynginx-p8080:80 nginx:latestDocker 会检查本地有没有nginx:latest镜像没有就去仓库拉。在镜像只读层之上加一个可写层。分配网络、进程空间、文件系统。启动容器。容器里的修改都发生在可写层不会影响原镜像。一旦容器删除可写层默认也会消失所以重要数据要用volume或bind mount持久化。常用命令dockerps# 查看运行中的容器dockerps-a# 查看所有容器dockerstop mynginx# 停止容器dockerstart mynginx# 启动容器dockerrmmynginx# 删除容器dockerexec-itmynginxsh# 进入容器dockerlogs mynginx# 查看日志容器有生命周期created → running → paused → stopped → exited → deleted五、仓库镜像的家仓库用来集中存储和分发镜像。常见的有Docker Hub官方公共仓库Harbor企业私有仓库GitLab Container Registry阿里云、腾讯云等容器镜像服务注意区分两个词Registry仓库服务比如 Docker Hub 整体。Repository某个镜像的仓库比如nginx这个仓库。Tag仓库里的版本比如latest、1.25、alpine。完整镜像名格式[registry地址/][命名空间/]仓库名[:标签]例如docker.io/library/nginx:latest registry.example.com/myteam/myapp:v1.2.3常用命令dockerlogin# 登录仓库dockertag mynginx:v1 user/mynginx:v1# 给镜像打标签dockerpush user/mynginx:v1# 推送镜像dockerpull user/mynginx:v1# 拉取镜像六、实战从拉取到推送下面走一遍完整流程加深理解。1. 拉取并运行 Nginxdockerpull nginx:latestdockerrun-d--namemynginx-p8080:80 nginx:latest浏览器访问http://localhost:8080能看到 Nginx 欢迎页。2. 进入容器修改内容dockerexec-itmynginxshechoHello Docker/usr/share/nginx/html/index.htmlexit刷新页面内容变成Hello Docker。3. 把容器保存成新镜像dockercommit mynginx mynginx:v1现在docker images里多了一个mynginx:v1。4. 推送到仓库dockertag mynginx:v1 yourname/mynginx:v1dockerlogindockerpush yourname/mynginx:v15. 在其他机器拉取运行dockerpull yourname/mynginx:v1dockerrun-d-p8080:80 yourname/mynginx:v1这就是镜像、容器、仓库协作的完整过程。生产环境不推荐用docker commit而应该用 Dockerfile 构建保证可重复、可审查。七、常见误区镜像不是容器镜像是静态模板容器是动态实例。删镜像前要先删依赖它的容器。容器删除数据就没了容器可写层随容器删除而消失。数据库、上传文件等必须用 volume。latest不是最新版latest只是默认标签不代表最新稳定版。生产建议用明确版本号如nginx:1.25.3。一个仓库可以有多个标签nginx:latest、nginx:1.25、nginx:alpine都属于nginx这个 Repository。仓库和镜像不是一对一仓库是“镜像的集合”标签才是具体版本。八、命令速查表操作命令查看本地镜像docker images拉取镜像docker pull nginx:latest构建镜像docker build -t myapp:v1 .运行容器docker run -d --name myapp -p 8080:80 myapp:v1查看容器docker ps -a进入容器docker exec -it myapp sh提交容器为镜像docker commit myapp myapp:v2打标签docker tag myapp:v1 user/myapp:v1推送镜像docker push user/myapp:v1删除容器docker rm myapp删除镜像docker rmi myapp:v1九、总结再回到那张核心关系图Dockerfile → 镜像 → 容器 ↑ ↓ └─ commit 镜像 ↔ 仓库push / pull镜像是只读模板分层存储可复用。容器是镜像的运行实例有可写层和生命周期。仓库是镜像的远程存放点通过 pull/push 分发。一句话记忆镜像像类容器像对象仓库像远程仓库build造镜像run起容器push/pull走仓库。
RELATED

相关推荐

ctfshow MISC入门图片篇(信息附加):misc7解题思路

ctfshow MISC入门图片篇(信息附加):misc7解题思路

下载解压,得到jpg文件。使用记事本打开,没有收获直接把jpg改为html文件,再使用浏览器打开Ctrlf 寻找关键词,发现能够找到!

📅 2026/9/27 10:14:35
MiBeeNvr v0.13.0:重构录像存储架构与I/O调度机制

MiBeeNvr v0.13.0:重构录像存储架构与I/O调度机制

1. 这不是普通升级:MiBeeNvr v0.13.0 把录像控制权真正交还给用户“录像存哪、接多少路,都归你管”——这句预告标题乍看像一句宣传口号,但作为连续三年深度参与安防边缘计算项目落地的从业者,我一眼就看出它背后藏着的分量。MiBe…

📅 2026/9/27 10:14:35
嵌入式C++第一行代码:裸机环境下可运行的cpp_main实现

嵌入式C++第一行代码:裸机环境下可运行的cpp_main实现

1. 这不是C入门课,是嵌入式系统里“动真格”的第一行代码你点开这个标题,大概率刚刷完三篇STM32 C教程——讲HAL库封装的、谈RAII在裸机中怎么模拟的、甚至还有人用模板元编程推导定时器重载周期的。但合上页面,手悬在键盘上:IDE里…

📅 2026/9/27 10:14:35
MORE NEWS

更多资讯

📰

WinCC Unified PC V16 通过 OPC UA 与 S7-200 SMART 通信实战指南

1. 项目缘起与整体方案设计1.1 为什么会有这个通信需求做过工控现场的朋友大概率都遇到过这种局面:上位机用的是博途里的 WinCC Unified PC V16,现场控制层却还跑着一批 S7-200 SMART。这两者分属不同世代的产品线,WinCC Unified 原生驱动列表…

📰

MCP协议安全性设计全解析:从会话层到消息层的多层防御体系与TaoToken配置实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

用Langchain结合LiteLLM配TaoToken:多语言对话模型配置骨架与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

网站空间商排行榜:新手入门避坑指南与实操

网站空间商排行榜:新手入门避坑指南与实操 别被那些花里胡哨的模板网站骗了。很多新手入门建站,第一反应是找个现成的模板拖拽一下,结果上线后才发现:页面加载慢得像蜗牛,移动端排版错乱得没法看,更别提搜索引擎根本抓不到核心内容。这就是典型的“模板…

📰

Pi Coding Agent 入门教程:用 TaoToken 统一 Key 打通 CLI 与 SDK 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

丹阳网站建设制作避坑:域名服务器搞不懂?3个硬指标教你挑出靠谱团队

丹阳网站建设制作避坑:域名服务器搞不懂?3个硬指标教你挑出靠谱团队 很多老板一提到“丹阳网站建设制作”,第一反应就是问价格,第二反应是看案例。但真正让项目烂尾、让网站上线后没人访问的,往往是两个最基础、最容易被忽悠的概念: 域名 和…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬