Docker 新手入门:镜像与容器到底有什么区别
很多刚接触 Docker 的朋友,第一个卡住的地方往往不是安装,而是两个总一起出现的名词:镜像和容器。它们看起来像一回事,实际上分工完全不同。这篇文章把两者的区别讲清楚,再给出五条最常用的命令,最后动手跑一个最小例子,看完就能上手。
一、先分清:镜像是"模板",容器是"实例"
打个比方:镜像像一份写好的菜谱加备齐的食材包,容器则是照着菜谱真正炒出来的一盘菜;换成编程里的说法,镜像是"类",容器是类 new 出来的"对象"。具体区别有四点:
- 能否运行:镜像是静态文件,只能被读取和分发;容器是运行中的进程,有自己的生命周期,可以启动、停止和删除。
- 能否修改:镜像是只读的,想改就得重新构建一个新镜像;容器在镜像之上多了一层可写层,运行时的改动都写在这一层。
- 数量关系:一个镜像可以同时跑出很多个容器,就像一份菜谱能炒出很多盘菜。
- 存储方式:镜像分层存储,多个镜像可以共享相同的层,既省磁盘也省下载时间。
记住一句话:没有镜像就没有容器,容器就是镜像"跑起来"的样子。
二、五条最常用的命令
日常使用 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 的门了。
- 点赞
- 收藏
- 关注作者
评论(0)