容器是一种操作系统级虚拟化技术,通过 Linux 内核的 namespace 和 cgroup 机制,将应用及其依赖打包在隔离的用户空间中运行。与虚拟机相比,容器共享宿主机内核,启动速度快、资源开销小,是现代开发和部署的基础设施。

核心概念

  • 镜像(Image):只读的文件系统快照,包含应用代码、运行时、库和配置。通过 Dockerfile 定义构建步骤,分层存储以复用公共层。
  • 容器(Container):镜像的运行实例,拥有独立的进程空间、网络和文件系统。容器是临时性的,销毁后数据不保留(除非使用 Volume)。
  • 仓库(Registry):存储和分发镜像的服务,如 Docker Hub、GitHub Container Registry、阿里云镜像服务等。

主流容器运行时

工具特点适用场景
Docker生态最成熟,工具链完善通用开发和部署
Podman无守护进程、rootless,兼容 Docker CLI安全敏感环境
containerd轻量级运行时,Kubernetes 默认生产集群
nerdctlcontainerd 的 Docker 兼容 CLIcontainerd 用户

开发环境中的容器实践

容器在开发中的核心价值是环境一致性。通过 Dockerfile 或 docker-compose.yml 定义开发环境,新成员克隆仓库后即可启动完整的开发栈,无需手动安装依赖。

常见实践包括:

  • 使用 VS Code Dev Containers 在容器内开发,IDE 功能完整保留
  • 用 docker-compose 编排多服务(如应用 + 数据库 + 缓存)的本地开发环境
  • CI/CD 流水线中使用容器保证构建环境与生产一致

相关笔记