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

举报
yd_234268181 发表于 2026/10/29 22:12:41 2026/10/29
【摘要】 从镜像、容器、Dockerfile、数据卷和端口映射讲起,带你跑起第一个容器,避开新手常见坑。

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

第一次接触 Docker 时,很多人都会问同一个问题:它和虚拟机到底有什么不同?一句话概括:虚拟机是搬走整台电脑,容器是只打包应用和它需要的运行环境。容器共享宿主机的操作系统内核,启动更快、占用更少,这正是它适合开发、测试和部署的原因。

镜像:只读的模板

镜像可以理解为一份只读的模板,里面装好了操作系统基础层、运行环境、依赖和应用代码。镜像是分层的,每一层只记录一次变化,所以多个镜像可以共享公共的基础层,下载和存储都更省空间。查看本地镜像用 docker images,拉取镜像用 docker pull,例如拉取一个轻量的 Nginx 镜像,就可以很快在本地跑起一个 Web 服务。

容器:镜像跑起来的实例

镜像本身不会运行,只有把它启动成容器,应用才真正工作。容器之间默认相互隔离,各自有自己的文件系统、进程空间和网络端口。一个镜像可以启动多个容器,就像同一份图纸可以盖出多栋结构相同的房子,只不过每栋房子里的住户和摆设可以不同。

动手:跑起第一个容器

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

这条命令做了四件事:以后台方式运行,容器起名为 my-web,把宿主机的 8080 端口映射到容器的 80 端口,并使用 nginx 镜像。随后在浏览器打开 localhost:8080,就能看到 Nginx 的欢迎页。用 docker ps 查看运行中的容器,用 docker logs my-web 查看日志,用 docker stop my-web 停止它,用 docker rm my-web 删除它。

用 Dockerfile 固化自己的应用

如果只是跑别人的镜像,还不算真正用好 Docker。把自己的应用做成镜像,需要写一个 Dockerfile。常见的写法是:选一个合适的基础镜像,把代码复制进去,安装依赖,声明暴露的端口,最后写清楚启动命令。构建时用 docker build -t my-app:1.0 .,运行用 docker run -d -p 3000:3000 my-app:1.0。这样,代码、依赖和启动方式就被固化成一份可以重复使用的镜像,换一台机器也能跑出同样的结果。

数据、端口与环境变量

容器默认是临时的,删掉容器,容器里新写的数据也会跟着消失。需要持久保存的数据,要用数据卷挂载到宿主机目录。端口映射解决的是外部如何访问容器,环境变量解决的是同一份镜像在开发、测试、生产环境如何使用不同的配置。把配置放在环境变量里,而不是写死在镜像里,是一个值得养成的好习惯。

新手最容易踩的三个坑

第一,容器退出就以为是 Docker 坏了,其实往往是主进程结束了,容器自然就停止了,查看日志通常能找到原因。第二,在容器里用 localhost 访问宿主机服务会失败,因为容器有自己的网络空间,需要用宿主机地址或专门的网络配置。第三,镜像越装越多、磁盘越占越大,要养成定期清理无用镜像和已停止容器的习惯,但删除前一定要确认没有重要数据。

一份可以照做的练习清单

先拉取并运行 Nginx,改端口再跑一个实例;然后写一个最简单的静态页面,用 Dockerfile 把它做成自己的镜像并运行;最后试着给容器挂载一个数据卷,验证删除容器后数据是否还在。走完这三步,镜像、容器、端口、数据卷这几个核心概念就不再是抽象名词,而是一套真正动手过的流程。Docker 的学习曲线并不陡,关键是少看概念、多跑命令,从一个能跑起来的容器开始,再慢慢扩展到编排和部署。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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