导出 GIF 设置

60 帧 · 20 fps · 3 秒

Docker:从源代码到运行中的容器

虚构的 Maple Shop 示例——一次构建,运行隔离进程,在容器外持久化状态

01 / 镜像构建 02 / macOS 上的 Docker Desktop Linux VM 容器隔离 源代码 app.jar / dist/ Dockerfile FROM · COPY · RUN 构建配方 BuildKit 构建 + 层缓存 Docker 镜像 maple-api:1.0 只读模板 镜像仓库 拉取 / 推送镜像 API 容器 A 进程 + 可写层 运行中 API 容器 B 同一镜像,新实例 已隔离 Docker 网络 服务名 DNS 数据库 PostgreSQL :5432 文件存储 对象存储 :9000 Linux 内核 命名空间 + cgroups 共享 命名卷 持久化数据库文件 独立于容器生命周期 构建指令 构建上下文 docker build docker pull docker run 创建另一实例 服务名 DNS SQL S3 API 隔离机制 数据库文件 图例 外部 安全 后端 基础设施 消息总线 数据库

虚构示例

  • Maple Shop 是虚构的在线商店
  • 网页前端 + API + 数据库 + 文件存储 + 后台任务
  • 所有名称与数据均为教学用别名

运行时

  • 容器是隔离的 Linux 进程
  • 主 PID 退出 → 容器停止
  • 多个容器可以共享同一镜像

数据与网络

  • 在 Compose 网络中使用服务名
  • 使用卷保存持久化数据
  • localhost 始终指当前容器