Docker 入门:从镜像到容器的第一课

举报
yd_216009296 发表于 2026/10/23 10:11:43 2026/10/23
【摘要】 如果你第一次接触 Docker,最容易被一堆名词绕晕:镜像、容器、仓库、Dockerfile。其实可以先记住一句话:镜像是“做好的模板”,容器是“用模板跑起来的实例”。同一个镜像可以启动很多个容器,每个容器互不干扰,删掉容器也不会自动删掉镜像,这正是 Docker 让人省心的起点。先说一个常见的误解:容器不是虚拟机。虚拟机要带一整套操作系统,启动慢、占资源多;容器共享宿主机的内核,只打包应用...

如果你第一次接触 Docker,最容易被一堆名词绕晕:镜像、容器、仓库、Dockerfile。其实可以先记住一句话:镜像是“做好的模板”,容器是“用模板跑起来的实例”。同一个镜像可以启动很多个容器,每个容器互不干扰,删掉容器也不会自动删掉镜像,这正是 Docker 让人省心的起点。

先说一个常见的误解:容器不是虚拟机。虚拟机要带一整套操作系统,启动慢、占资源多;容器共享宿主机的内核,只打包应用和它依赖的库,所以启动快、体积小。它不能完全替代虚拟机,但在“开发环境一致、快速部署、快速回滚”这些场景里,优势非常明显。

装好 Docker 后,先用一条命令确认环境:docker --version。如果能看到版本号,说明命令行已经通了。接下来拉一个最常见的入门镜像:docker pull nginx。这里的 nginx 就是一个现成的 Web 服务器镜像,pull 是把它从镜像仓库下载到本地。用 docker images 可以看到本地有哪些镜像,用 docker ps 可以看到正在跑的容器。

最小跑通示例只需要一行:docker run -d --name my-web -p 8080:80 nginx。其中,-d 表示后台运行,–name 是给容器起个名字,方便后面管理;-p 8080:80 是端口映射,意思是把宿主机的 8080 端口映射到容器里的 80 端口。想看日志就用 docker logs my-web,想进容器里看一眼就用 docker exec -it my-web sh,退出用 exit。

用完之后别急着不管,养成清理习惯:docker stop my-web 是停止容器,docker rm my-web 是删除容器。如果只是停止,下次还能再启动;删除后,容器里没有持久化的数据就没了。所以,重要数据不要只放在容器里,要用数据卷,例如 -v mydata:/usr/share/nginx/html,把数据挂到卷里,容器删了卷还在,用 docker volume ls 可以查看。

新手最常见的三个坑,提前知道能少走弯路。第一,端口被占用:8080 已被别的程序占用时,换一个宿主机端口,例如 -p 8081:80。第二,容器退出了:很多时候不是 Docker 坏了,而是容器里没有前台进程,检查一下启动命令和日志。第三,分不清镜像名和容器名:pull、run 后面跟的是镜像,stop、rm、logs 后面跟的是容器名或容器 ID。

最后给自己留一个小练习:把上面这套流程完整走一遍,再试着把 nginx 换成自己熟悉的另一个镜像,比较一下启动参数有什么不同。等你能熟练地说出“这个应用跑在哪个容器里、用了哪个镜像、映射了哪个端口、数据存在哪里”,Docker 入门这一步就算真正过关了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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