返回主页 学习路径
Docker
一次构建 · 随处运行 · 现代应用基石
Docker 是由 Solomon Hykes 于 2013 年创建的容器化平台,通过操作系统级虚拟化技术,将应用程序及其依赖打包到轻量级容器中。Docker 让应用可以在任何环境中一致运行,解决了"在我机器上能跑"的千古难题。Docker 是现代 DevOps、微服务、云原生技术的核心组件,全球超过 80% 的组织在生产环境中使用 Docker。
容器化之王 · 应用打包标准
📅 诞生时间2013年 · Solomon Hykes / dotCloud
🧩 类型容器化 · 操作系统级虚拟化
📊 配置语言命令行 / YAML
⚡性能
8/10
📦生态
10/10
🧠易用
9/10
🚀扩展性
9/10

📑 本文目录

📌 第一部分:Docker 概览与定位

1.1 定义与全称

Docker 是一个开源的容器化平台,由 Solomon Hykes 于 2013 年创建。Docker 通过操作系统级虚拟化技术,将应用程序及其依赖打包到轻量级、可移植的容器中,实现 一次构建,随处运行

1.2 核心定位

Docker 的核心定位是 应用打包和交付的标准化。它提供了:

1.3 主要应用领域

1.4 知名案例


📜 第二部分:Docker 的历史与发展演进

2.1 诞生背景(2013年)

Docker 由 dotCloud 公司的 Solomon Hykes 在 2013 年创建,最初是 dotCloud 内部的一个项目。Docker 利用了 Linux 的 cgroups 和 namespaces 技术,实现了轻量级容器。2013 年 3 月,Docker 在 PyCon 大会上首次公开,迅速成为技术界的焦点。

2.2 关键版本里程碑

2.3 Docker vs 虚拟机

对比项 Docker 容器 虚拟机
启动时间秒级分钟级
资源占用MB 级GB 级
隔离级别进程级系统级
性能损耗接近原生有显著损耗
操作系统共享宿主机内核独立操作系统

⚙️ 第三部分:核心命令与操作

3.1 基础命令

# 查看版本
docker --version
docker info

# 镜像管理
docker images                  # 查看镜像
docker pull nginx:latest       # 拉取镜像
docker rmi image_id            # 删除镜像
docker build -t myapp .        # 构建镜像

# 容器管理
docker ps                      # 运行中的容器
docker ps -a                   # 所有容器
docker run nginx               # 运行容器
docker run -d nginx            # 后台运行
docker run -it ubuntu bash     # 交互式运行
docker start container_id      # 启动容器
docker stop container_id       # 停止容器
docker restart container_id    # 重启容器
docker rm container_id         # 删除容器

# 日志和查看
docker logs container_id       # 查看日志
docker logs -f container_id    # 实时日志
docker exec -it container_id bash  # 进入容器
docker inspect container_id    # 查看容器详情

# 端口映射
docker run -p 8080:80 nginx    # 映射端口

# 数据卷
docker run -v /host:/container nginx  # 挂载卷
docker volume create myvolume        # 创建卷

# 网络
docker network ls               # 查看网络
docker network create mynet     # 创建网络
docker run --network mynet nginx  # 使用网络

3.2 Dockerfile 编写

# 基础镜像
FROM node:18-alpine

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制源代码
COPY . .

# 构建应用
RUN npm run build

# 暴露端口
EXPOSE 3000

# 启动命令
CMD ["npm", "start"]

# 多阶段构建(优化大小)
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80

3.3 Docker Compose 配置

# docker-compose.yml
version: '3.8'

services:
  # Web 服务
  web:
    build: ./web
    ports:
      - "80:80"
    depends_on:
      - api
      - redis

  # API 服务
  api:
    build: ./api
    ports:
      - "3000:3000"
    environment:
      - REDIS_HOST=redis
      - DB_HOST=postgres
    depends_on:
      - postgres
      - redis

  # 数据库
  postgres:
    image: postgres:15
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

  # 缓存
  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  postgres_data:

# 使用命令
# docker-compose up -d        # 启动
# docker-compose down         # 停止
# docker-compose logs         # 查看日志
# docker-compose exec web bash # 进入容器

3.4 多容器应用示例

# LAMP 栈(Linux + Apache + MySQL + PHP)
version: '3.8'

services:
  app:
    build: .
    ports:
      - "8080:80"
    volumes:
      - ./app:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db
    depends_on:
      - db

volumes:
  db_data:

3.5 镜像仓库(Docker Hub)

# 登录 Docker Hub
docker login

# 标记镜像
docker tag myapp:latest username/myapp:latest

# 推送镜像
docker push username/myapp:latest

# 拉取镜像
docker pull username/myapp:latest

# 私有仓库
docker tag myapp localhost:5000/myapp
docker push localhost:5000/myapp

⚖️ 第四部分:Docker 与其他技术对比

4.1 Docker vs Podman

4.2 Docker vs Kubernetes

4.3 Docker vs Vagrant


🧠 第五部分:学习建议

1
基础入门

Docker 安装、核心概念(镜像/容器/仓库)、基础命令

2
核心进阶

Dockerfile 编写、镜像构建、数据卷、网络配置

3
多容器管理

Docker Compose、多服务编排、环境变量配置

4
生产部署

镜像优化、安全配置、CI/CD 集成、Docker Swarm/Kubernetes

推荐学习资源


🎯 总结升华

Docker 是现代应用部署的集装箱。

它用 镜像打包、容器运行、标准化交付 解决了应用环境不一致的千古难题。Docker 是云原生时代的基石,也是每个开发者必须掌握的技能。

"Docker 改变了软件交付的方式。" 🐳

—— 技术社区评价

🔖 相关标签
#容器化 #DevOps #镜像 #云原生 #微服务 #Docker Compose #Kubernetes
📄 本文档为 Docker 完整白皮书 · 最后更新于 2026年06月28日