2026年4月

“环境不一致”是导致软件故障最常见的原因之一。开发环境、测试环境、生产环境的差异,常常让部署过程变成一场灾难。Docker的出现彻底改变了这一现状,它通过容器技术将应用及其所有依赖(库、配置文件、运行时环境)打包在一起,确保了环境的一致性。
什么是Docker?
简单来说,Docker就是一个轻量级的虚拟机。但与虚拟机模拟整个操作系统不同,Docker容器共享宿主机的内核,因此启动速度极快,资源占用极低。
核心概念速览:

  • 镜像(Image):一个只读的模板,包含了运行应用所需的一切。类似于安装光盘。
  • 容器(Container):镜像的运行实例。你可以启动、停止、移动或删除容器。
  • Dockerfile:一个文本文件,包含了一系列指令,用于自动构建镜像。
    实战演练:容器化一个Node.js应用
    假设我们有一个简单的app.js。
  • 创建Dockerfile:

    # 使用官方Node.js镜像作为基础镜像
    FROM node:18-alpine
    # 设置工作目录
    WORKDIR /app
    # 复制package.json并安装依赖
    COPY package*.json ./
    RUN npm install
    # 复制源代码
    COPY . .
    # 暴露端口
    EXPOSE 3000
    # 启动命令
    CMD ["node", "app.js"]
  • 构建镜像:
    在终端执行docker build -t my-node-app .。Docker会根据Dockerfile的指令一步步构建出名为my-node-app的镜像。
  • 运行容器:
    执行docker run -p 3000:3000 my-node-app。这就启动了容器,并将容器的3000端口映射到主机的3000端口。
    现在,无论你把这台主机上的镜像迁移到哪台安装了Docker的服务器上,只要执行docker run,应用就能以完全相同的方式运行。再也不用担心缺少依赖包或版本冲突了。拥抱容器化,是迈向现代化运维的第一步。