Docker 容器入门:从拉取镜像到跑起第一个服务

举报
yd_242458115 发表于 2026/10/24 16:36:44 2026/10/24
【摘要】 从零开始用 Docker 运行第一个服务:镜像拉取、端口映射、数据持久化、日志排查,附带 5 个新手最常踩的坑和对应解法。

为什么用容器

传统部署把代码、依赖、系统库混在一台机器上,换个环境就要重新装一遍。容器把应用和它的依赖打包成一个镜像,在任何装了容器运行时的机器上行为一致。这也是它成为云上部署默认形态的原因。

装好运行时

以 Ubuntu 为例,安装后用一条命令验证:

docker --version

docker run hello-world

第二条命令会拉取一个小镜像并打印提示信息。如果能看到输出,说明运行时已经就绪。

跑起第一个服务

以 Nginx 为例,一行命令就能启动:


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

`

拆开看每个参数:-d 表示后台运行,--name 给容器起个名字方便后续操作,-p 8080:80 把宿主机的 8080 端口映射到容器内的 80 端口,nginx:alpine 指定镜像和标签。

启动后用浏览器访问该映射端口就能看到默认欢迎页。实际部署时请把地址替换成你自己的访问入口。

数据要持久化

容器删掉,里面的数据就没了。需要把目录挂出来:


docker run -d --name web2 -p 8081:80 -v /data/nginx/html:/usr/share/nginx/html:ro nginx:alpine

`

-v 左边是宿主机目录,右边是容器内路径,ro 表示只读挂载。这样容器重建时内容还在。

查看状态和日志


docker ps

docker logs -f web

docker stats

第一条看运行中的容器,第二条实时跟日志,第三条看资源占用。排查问题基本靠这三条命令起步。

五个新手常踩的坑

第一,端口被占用。启动报 bind: address already in use,先用 ss -tlnp 看是哪个进程占了端口,再改映射。

第二,容器一启动就退出。用 docker logs 看退出前的输出,多数是配置路径写错或缺少必需的环境变量。

第三,镜像拉取慢或超时。配置国内镜像加速地址,改完重启运行时生效。

第四,改了配置不生效。容器内改了文件但没有重启,或者改的是镜像内文件而不是挂载目录。

第五,磁盘被占满。docker system prune 可以清理停止的容器和悬空镜像,但执行前要确认没有还需要的数据。生产环境不要随手执行带 -a 的清理。

小结

容器本身不复杂,核心就是镜像、容器、网络、存储四件事。把端口映射和目录挂载这两点理解透,日常部署八成的问题都能自己解决。

``````````

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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