跳至主要內容
Docker - 1

Docker

简介

Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)

Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker


code中间件Docker大约 3 分钟
Docker - 2

Docker

优势

更高效的利用系统资源

由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高

无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。

更快速的启动时间

传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。


code中间件Docker大约 3 分钟
Docker - 2

Docker

Docker 本质:

Docker = 创建隔离进程 + 资源管理 + 网络/文件映射

容器就是进程

  • 容器内的应用进程直接运行在宿主机内核上
  • 容器 ID 本质上就是一组经过特殊配置的进程
  • 这些进程通过 Linux 的 namespaces 和 cgroups 实现隔离
宿主机视角:
  PID 1001: nginx 主进程  ← 这就是一个"容器"
  PID 1002: nginx worker
  ...

容器视角:
  PID 1: nginx 主进程
  PID 2: nginx worker
  ...

code中间件Docker大约 7 分钟
Docker - 2

Docker

分析

Docker 镜像会包含应用运行所需的所有系统依赖

一个应用的 Docker 镜像会包含:

  • 应用代码
  • 运行环境(如 Node.js、JRE、Python)
  • 所有系统依赖库
  • 必要的工具(shell、包管理器等)

比如:

FROM node:18-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install --production  # 安装 npm 依赖(包括原生模块)
COPY . .

CMD ["node", "server.js"]

code中间件Docker小于 1 分钟