Docker 入门:跑起第一个容器,先分清镜像、容器与数据卷

举报
yd_256764903 发表于 2026/10/29 14:28:21 2026/10/29
【摘要】 用镜像、容器、数据卷三个概念讲清 Docker 入门,并带你跑起第一个 nginx 容器、写出最小 Dockerfile。

新手学 Docker,最容易被三个词绕晕:镜像、容器、数据卷。记住一句话就顺了:镜像是做好的模板,容器是按模板跑起来的实例,数据卷是把数据从容器里单独存出来的办法。模板本身不会变,实例可以随时创建和删除,而真正重要的数据,最好不要只放在容器内部。

镜像相当于一个已经装好系统和软件的只读包,比如 nginx 镜像里就带有网页服务器程序,你不需要在电脑上一步步安装配置,直接拉取就能用。镜像可以分层复用,改动一层只需更新那一层。镜像名后面的标签要注意,例如 nginx:latest 表示最新版,实际使用建议写明具体版本,避免今天和明天拉到的内容不一样。

容器是镜像跑起来的进程实例。同一个镜像可以同时跑出多个容器,它们之间默认是隔离的,就像用同一份图纸盖出几间结构相同但住户不同的房子。容器停止或删除后,容器内部新产生的数据默认也会随之消失。临时测试很方便,但不要把唯一一份数据只留在容器里。

数据卷就是为了解决这个问题。把宿主机目录或命名卷挂载到容器内部,数据就有了独立的存放位置,容器删了重建,只要重新挂载同一个卷,数据还在。端口映射也是类似思路:容器里的 80 端口不会自动出现在宿主机上,需要用 -p 把它映射出来,外面才能访问。

先验证安装是否成功:

docker version
docker run hello-world

看到欢迎信息,就说明 Docker 可以正常工作。接下来跑一个最简单的网页服务:

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

这条命令是以后台方式运行一个名叫 my-web 的容器,把容器里的 80 端口映射到本机 8080 端口。在浏览器打开 localhost:8080,就能看到默认欢迎页。用完之后先停止再删除:docker stop my-web,docker rm my-web,及时清理才不会堆满不用的容器。

想发布自己的页面,可以写一个很小的 Dockerfile:

FROM nginx
COPY index.html /usr/share/nginx/html/index.html

把它和 index.html 放在同一目录,然后构建并运行:

docker build -t my-page:1.0 .
docker run -d -p 8080:80 my-page:1.0

这样就完成了一个从代码到可访问服务的最小闭环。最后提醒几个常见问题:端口被占用时先换一个宿主机端口;重要数据一定要挂载数据卷,删除容器前先确认数据位置;调试时先看 docker logs,往往比猜测更快。建议今天就亲手走一遍:拉取镜像、启动容器、访问页面、查看日志、停止删除,再给自己的页面做一个镜像,走完这一圈,Docker 就不再只是一个名词。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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