Docker 新手入门:镜像与容器到底有什么区别

举报
yd_222352653 发表于 2026/10/24 09:18:39 2026/10/24
【摘要】 面向 Docker 新手:用菜谱与实例的比喻讲清镜像与容器的四点区别,梳理 pull、images、run、ps、stop/rm 五条最常用命令,并用 nginx 镜像 30 秒跑起一个网页作为最小实战。

很多刚接触 Docker 的朋友,第一个卡住的地方往往不是安装,而是两个总一起出现的名词:镜像和容器。它们看起来像一回事,实际上分工完全不同。这篇文章把两者的区别讲清楚,再给出五条最常用的命令,最后动手跑一个最小例子,看完就能上手。

一、先分清:镜像是"模板",容器是"实例"

打个比方:镜像像一份写好的菜谱加备齐的食材包,容器则是照着菜谱真正炒出来的一盘菜;换成编程里的说法,镜像是"类",容器是类 new 出来的"对象"。具体区别有四点:

  1. 能否运行:镜像是静态文件,只能被读取和分发;容器是运行中的进程,有自己的生命周期,可以启动、停止和删除。
  2. 能否修改:镜像是只读的,想改就得重新构建一个新镜像;容器在镜像之上多了一层可写层,运行时的改动都写在这一层。
  3. 数量关系:一个镜像可以同时跑出很多个容器,就像一份菜谱能炒出很多盘菜。
  4. 存储方式:镜像分层存储,多个镜像可以共享相同的层,既省磁盘也省下载时间。

记住一句话:没有镜像就没有容器,容器就是镜像"跑起来"的样子。

二、五条最常用的命令

日常使用 Docker,八成操作离不开下面五条:

# 1. 拉取镜像:从仓库把镜像下载到本地
docker pull nginx

# 2. 查看镜像:列出本地已有的全部镜像
docker images

# 3. 运行容器:-d 后台运行,-p 映射端口,--name 起个名字
docker run -d -p 8080:80 --name web nginx

# 4. 查看容器:不加 -a 只看正在运行的
docker ps -a

# 5. 停止并删除容器
docker stop web
docker rm web

这五条里,pull 负责"拿到模板",run 负责"把模板跑成实例",images 和 ps 负责"看状态",stop 加 rm 负责"收尾清理",正好覆盖一个容器的完整一生。

三、最小实战:30 秒跑起一个网页

用官方 nginx 镜像跑一个静态站点,验证 Docker 是否真的可用:

docker run -d -p 8080:80 --name hello-web nginx

命令执行后,打开浏览器,访问本机的 8080 端口,能看到 “Welcome to nginx!” 就说明成功了。这一条命令实际做了三件事:找到 nginx 镜像(本地没有会自动拉取)、按镜像配置启动名为 hello-web 的容器、把容器的 80 端口映射到主机的 8080 端口。

用完清理也很简单:

docker stop hello-web
docker rm hello-web

注意:容器被删时,可写层里的数据会一起消失,所以重要数据要提前用数据卷(volume)挂载出来,不要只存在容器内部。

写在最后

镜像与容器的关系,本质是"静态模板"和"动态实例"的关系。把这点想通,后面再学 Dockerfile、镜像分层和容器编排都会顺很多。先把五条命令敲熟,再跑通那个最小例子,你就算是真正跨进 Docker 的门了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。