Docker 容器、网络与数据持久化实战

结合个人博客部署讲清容器生命周期、日志、服务名访问、端口暴露原则和 MySQL 数据卷。

已发布文章云原生与运维进阶4 分钟阅读发布于 2026年9月3日更新于 2026年9月4日
文章目录
  1. 容器生命周期
  2. 看日志定位问题
  3. 容器网络
  4. 端口暴露原则
  5. 数据卷
  6. 绑定目录和数据卷怎么选
  7. 小艾知行录建议结构
知识目录Docker 从入门到生产部署4 / 14
LOCAL NOTE高亮并记笔记
0 / 1000 · 只保存在这台设备
READER NOTESDocker 容器、网络与数据持久化实战》的本机笔记

动手前先知道

这篇文章对应的真实任务是:结合个人博客部署讲清容器生命周期、日志、服务名访问、端口暴露原则和 MySQL 数据卷。

第一次阅读先弄清“为什么需要这一步、它改变了哪个运行对象、失败时去哪里检查”,再执行命令。命令可以查,运行模型和排障路径才是长期能力。

容器、网络和数据卷是 Docker 真正运行时最重要的三件事。镜像构建成功只是第一步,服务能不能稳定运行,主要看这三个地方有没有设计清楚。

容器生命周期

常用命令:

docker ps
docker ps -a
docker stop <container>
docker start <container>
docker restart <container>
docker rm <container>

docker ps 只看正在运行的容器;docker ps -a 可以看到已经退出的容器。

如果服务访问不了,第一眼先看:

docker ps

确认容器是不是还活着。

看日志定位问题

容器启动失败时,不要先猜,先看日志:

docker logs <container>

持续追踪日志:

docker logs -f <container>

只看最近 100 行:

docker logs --tail=100 <container>

个人项目排障顺序建议是:

容器是否运行
日志有没有报错
端口有没有映射
容器之间网络是否能通
环境变量是否正确

容器网络

Compose 默认会给项目创建一个内部网络。同一个 Compose 项目里的服务可以直接用服务名互相访问。

例如:

services:
  api:
    depends_on:
      - mysql
  mysql:
    image: mysql:8

后端连接数据库时,主机名可以写:

mysql

而不是 127.0.0.1

这是很多初学部署的人最容易踩的坑:容器里的 127.0.0.1 指的是容器自己,不是宿主机,也不是另一个容器。

端口暴露原则

生产环境建议:

  • Nginx 暴露 80/443。
  • 前端容器只在内部网络开放。
  • 后端容器只在内部网络开放。
  • MySQL 不映射公网端口。
  • Redis 不映射公网端口。

也就是说,外部用户只应该通过 Nginx 进入系统。

数据卷

数据卷用于保存容器重建后仍要保留的数据。

MySQL 示例:

services:
  mysql:
    image: mysql:8
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

这样容器删除重建后,只要数据卷还在,数据库数据就还在。

绑定目录和数据卷怎么选

绑定目录适合:

  • Nginx 配置文件。
  • 证书文件。
  • 需要人工查看的日志目录。

Docker volume 适合:

  • MySQL 数据。
  • Redis 数据。
  • 不需要直接人工编辑的持久化数据。

个人项目为了可控,Nginx 配置和证书可以用宿主机目录挂载,数据库用 Docker volume。

小艾知行录建议结构

nginx
  ├─ 对外暴露 80/443
  ├─ 转发页面到 web
  └─ 转发 API 到 api

web
  └─ 只在 Docker 内网被 nginx 访问

api
  ├─ 只在 Docker 内网被 nginx 访问
  ├─ 连接 MySQL
  └─ 连接 COS / AI 服务

mysql
  └─ 使用 volume 保存数据,不暴露公网

这个结构清楚、稳定,也适合一个人维护。

JARVIS · 当前文章

有哪里没看懂?可以只问这篇。

Jarvis 会限定在《Docker 容器、网络与数据持久化实战》及其公开关联内容中检索,并把引用定位回原文章节。

JARVIS / ARTICLE针对《Docker 容器、网络与数据持久化实战》提问
当前范围Docker 容器、网络与数据持久化实战不会悄悄扩大到全站
0 / 1000

准备好了。当前只会围绕Docker 容器、网络与数据持久化实战回答。

READER SIGNAL

这篇内容对你有帮助吗?

不需要登录。你的反馈会直接进入作者待处理列表。