发布微服务

已发行

本章内容概览:

  • 容器与镜像的区别
  • Docker 基础
  • 将微服务封装为 Docker 镜像
  • 构建私有容器仓库
  • 在容器环境中部署微服务

本章学习如何将第 2 章的视频流微服务发布出去,为部署到 Kubernetes 集群做好准备。

3.1 容器是什么?

定义 容器是一种虚拟化服务器的技术,提供虚拟化操作系统和硬件的方法。

容器比虚拟机更轻量,因为它们虚拟化操作系统和硬件,无需完整的操作系统副本。

图 3.1 比较虚拟机和容器
图 3.1 比较虚拟机和容器

3.2 什么是镜像?

定义 镜像是服务器的可启动快照,包含运行服务所需的所有代码、依赖和资产。

镜像具有不可变性,一旦创建无法更改。这确保了经过测试和安全检查的镜像不会被篡改。

图 3.2 在云中运行我们的微服务,我们将实例化其 Docker 镜像到一个容器中。
图 3.2 在云中运行我们的微服务,我们将实例化其 Docker 镜像到一个容器中。

3.3 为什么选择 Docker?

Docker 已成为软件行业的标准工具:

  • 几乎无处不在的广泛支持
  • 标准化开发环境,与生产环境保持一致
  • 可视为"通用包管理器"

3.4 Docker 工作流程

图 3.3 将 Docker 镜像发布到我们的私有容器仓库的云中
图 3.3 将 Docker 镜像发布到我们的私有容器仓库的云中

关键任务:

  1. 将微服务打包为 Docker 镜像
  2. 发布镜像到私有容器仓库
  3. 在容器中运行微服务

3.4.1 Dockerfile

Dockerfile 是创建镜像的规范文件:

FROM node:18.17.1             # 基础镜像
WORKDIR /usr/src/app          # 工作目录
COPY package*.json ./         # 复制依赖文件
RUN npm ci --omit=dev         # 安装生产依赖
COPY ./src ./src              # 复制源代码
COPY ./videos ./videos        # 复制视频文件
CMD npm start                 # 启动命令

关键指令:

  • FROM:指定基础镜像
  • COPY:复制文件到镜像
  • RUN:构建时运行命令
  • CMD:容器启动时调用的命令

3.4.2 构建和运行

构建镜像:

docker build -t video-streaming --file Dockerfile .

列出镜像:

docker image list

启动容器:

docker run -d -p 3000:3000 -e PORT=3000 video-streaming

参数:

  • -d:后台运行
  • -p:端口映射
  • -e:环境变量

检查容器:

docker container list
docker logs <container-id>

3.5 发布微服务

3.5.1 发布步骤

  1. 创建私有容器仓库
  2. docker login 身份验证
  3. docker tag 标记镜像
  4. docker push 上传镜像

3.5.2 完整流水线

图 3.4 显示"构建"、“推送"和"运行"在流程中所处位置的完整 Docker 构建流水线
图 3.4 显示"构建"、“推送"和"运行"在流程中所处位置的完整 Docker 构建流水线

总结

  • Docker 是打包、发布和运行容器的标准工具
  • 容器是虚拟化的服务器(如微服务)
  • 镜像是准备实例化的容器快照,具有不可变性
  • Dockerfile 指定镜像构建脚本
  • docker build 创建镜像,docker run 实例化容器
  • docker push 发布镜像到容器仓库

下一章将学习如何在开发计算机上运行多个基于 Docker 的微服务。

创建于 2026/01/06 更新于 2026/01/06 846 字 阅读约 2 分钟

提交勘误/建议