Skip to content

容器技术

容器技术解决的是应用交付和运行隔离的问题:把应用、运行时、依赖库、配置入口和启动命令封装成镜像,再交给容器运行时或部署平台启动。Docker、containerd、Kubernetes、Colima 处在不同层级,不能简单归为同一类工具。

容器交付链路

这组文档解决什么问题

容器专题按“基础概念 -> 容器实现 -> 部署编排 -> 使用工具”的方式组织:

模块解决的问题适合阅读的时机
Basic容器、镜像、运行时、隔离机制、标准接口建立全局认知,分清生态层级
DockerDocker 作为容器工具链如何构建镜像、运行容器、管理网络和卷单机开发、镜像制作、排查 Docker 使用问题
Kubernetes如何把容器应用部署成可调度、可扩缩、可恢复的集群服务多服务生产部署、发布治理、资源隔离
ToolsColima 等本地容器工具如何选择和使用macOS/Linux 本地容器环境、轻量 K8s 实验

容器解决的核心问题

传统部署常见的问题是环境不可复制:开发机、测试机和生产机的系统版本、动态库、目录结构、启动参数都可能不一样。容器把这些差异收敛到镜像和启动参数里,让应用交付更接近“同一个制品在不同环境运行”。

容器常覆盖四个边界:

边界说明常见工具
构建边界把源码和依赖变成镜像Dockerfile、BuildKit
运行边界给进程提供隔离的文件系统、网络、资源限制Docker、containerd、runc
分发边界上传、拉取和版本化镜像Registry、Harbor、Docker Hub
编排边界管理多个副本、服务发现、滚动发布和故障恢复Kubernetes

从代码到运行的路径

一个常见 Web 服务进入容器平台,大致会经过以下步骤:

  1. 编写 Dockerfile,把应用和运行依赖封装成镜像。
  2. 构建镜像并打标签,例如 registry.example.com/order-api:1.4.2
  3. 推送镜像到镜像仓库,让部署环境可以拉取。
  4. 在单机用 Docker 验证端口、环境变量、卷挂载和启动命令。
  5. 在 Kubernetes 中用 Deployment 描述副本数和发布策略。
  6. 用 Service、Ingress、ConfigMap、Secret、PVC 等资源补齐访问、配置、密钥和存储。
  7. 通过日志、事件、指标和探针排查运行状态。

这条链路中,基础概念解释“容器为什么能隔离和复用”,Docker 更关注“开发者如何构建和运行容器”,containerd 这类运行时更关注“节点如何实际管理容器生命周期”,Kubernetes 更关注“很多容器如何被稳定地部署和治理”。

容器、镜像、运行时与编排

概念作用容易混淆的点
镜像应用运行所需文件的只读模板镜像不是正在运行的进程
容器镜像启动后的运行实例容器删除后,写入容器层的数据通常会丢失
运行时拉取镜像、创建容器、管理生命周期containerd、CRI-O、runc 属于不同运行时层级
高层工具封装构建、运行、日志、网络、卷等操作Docker、Podman 面向开发者体验
编排系统调度、扩缩容、服务发现、滚动更新Kubernetes 不负责构建镜像,它负责部署和治理容器应用

什么时候先看 Basic

如果还分不清镜像、容器、运行时、仓库、CRI、OCI、CNI、CSI,应该先看 Basic。这些概念是 Docker、containerd、Kubernetes 和 Colima 的共同底层。

什么时候只用 Docker

只用 Docker 通常适合单机开发、临时验证、工具服务、个人服务器和较小规模部署。判断标准不是“服务是否重要”,而是是否已经需要自动调度、多副本恢复、跨节点网络和集群级权限治理。

常见场景:

  • 本地启动 MySQL、Redis、Nginx、MinIO 等依赖。
  • 在 CI 中构建和测试镜像。
  • 单台服务器部署一个明确边界的小应用。
  • 排查镜像启动命令、端口映射、文件挂载和环境变量。

什么时候需要 Kubernetes

当系统开始出现多个服务、多副本、滚动发布、节点故障恢复、不同团队共享集群、配置和密钥统一管理时,就需要 Kubernetes 这类容器部署和编排框架。

典型信号:

  • 一个服务至少需要多个副本,且要自动替换失败实例。
  • 服务之间需要稳定发现,而不是手写 IP。
  • 发布需要灰度、滚动更新、回滚和探针保护。
  • 集群资源需要按团队、环境或命名空间隔离。
  • 需要统一接入日志、监控、告警和权限控制。

排查入口

问题优先查看
不清楚 Docker、containerd、Kubernetes、Colima 的关系容器基础导览
想理解 OCI、CRI、CNI、CSI容器标准
镜像构建慢、镜像过大、容器启动命令不清楚Docker 导览
docker run 后端口不通、卷挂载不生效Docker 常用命令
Pod 起不来、服务访问不到、发布失败Kubernetes 导览
不清楚 Pod、Service、Ingress、PVC 的分工Kubernetes 资源导览
想在 macOS 上轻量跑 Docker 或 Kubernetes工具导览
别急,先让缓存热一下。