Skip to content

Docker简介

什么是Docker?

Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。这个容器可以在任何支持Docker的环境中一致地运行,从而解决了"在我机器上能跑"的经典问题。

核心价值

Docker的核心价值在于标准化可移植性

  • 环境一致性 - 开发、测试、生产环境完全一致
  • 快速交付 - 缩短从开发到部署的周期
  • 资源效率 - 相比传统虚拟机更轻量
  • 微服务友好 - 完美支持现代微服务架构

Docker的发展历程

时间里程碑
2013年Docker作为dotCloud公司的内部项目发布
2014年Docker 1.0正式发布,容器技术开始普及
2016年Docker支持Windows容器
2017年Docker企业版发布,Kubernetes成为主流编排工具
2020年Docker Desktop成为开发者首选工具
至今Docker已成为云原生技术栈的标准组件

Docker vs 虚拟机

理解Docker与传统虚拟机的区别是掌握容器技术的关键:

┌─────────────────────────────────────────────────────────────┐
│                        虚拟机架构                            │
├─────────────────────────────────────────────────────────────┤
│  App A  │  App B  │  App C  │        应用层                 │
├─────────┼─────────┼─────────┤                              │
│ Bins/Libs│ Bins/Libs│ Bins/Libs│      依赖库               │
├─────────┼─────────┼─────────┤                              │
│Guest OS │Guest OS │Guest OS │      客户机操作系统           │
├─────────┴─────────┴─────────┤                              │
│         Hypervisor          │      虚拟化层                 │
├─────────────────────────────┤                              │
│         Host OS             │      宿主机操作系统           │
├─────────────────────────────┤                              │
│       Physical Server       │      物理服务器               │
└─────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                        Docker架构                           │
├─────────────────────────────────────────────────────────────┤
│  App A  │  App B  │  App C  │        应用层                 │
├─────────┼─────────┼─────────┤                              │
│ Bins/Libs│ Bins/Libs│ Bins/Libs│      依赖库               │
├─────────┼─────────┼─────────┤                              │
│Container│Container│Container│      容器层                   │
├─────────┴─────────┴─────────┤                              │
│       Docker Engine         │      Docker引擎              │
├─────────────────────────────┤                              │
│         Host OS             │      宿主机操作系统           │
├─────────────────────────────┤                              │
│       Physical Server       │      物理服务器               │
└─────────────────────────────┘

关键差异对比

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

Docker的应用场景

1. 应用部署

bash
# 传统部署方式需要:
# 1. 安装运行时环境
# 2. 配置依赖
# 3. 设置环境变量
# 4. 部署应用代码

# Docker部署只需要:
docker run -d -p 8080:80 my-app

2. 开发环境标准化

yaml
# docker-compose.yml
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

  database:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: example

3. 微服务架构

每个微服务运行在独立的容器中,实现:

  • 独立部署和扩展
  • 技术栈自由选择
  • 故障隔离
  • 灵活的资源分配

4. CI/CD流水线

yaml
# GitLab CI示例
build:
  image: docker:latest
  script:
    - docker build -t my-app .
    - docker push registry/my-app

Docker生态系统

Docker不仅仅是容器运行时,它拥有完整的生态系统:

                    ┌─────────────┐
                    │ Docker Hub  │  镜像仓库
                    └──────┬──────┘

┌──────────────────────────┼──────────────────────────┐
│                          │                          │
│  ┌──────────────┐   ┌────┴────┐   ┌──────────────┐  │
│  │ Docker Engine│   │  Docker │   │   Docker     │  │
│  │   (运行时)    │   │ Compose │   │  Desktop     │  │
│  └──────────────┘   └─────────┘   └──────────────┘  │
│                                                     │
│  ┌──────────────┐   ┌─────────┐   ┌──────────────┐  │
│  │ Docker Build │   │ Docker  │   │   Docker     │  │
│  │   (构建)      │   │  Swarm  │   │  Registry    │  │
│  └──────────────┘   └─────────┘   └──────────────┘  │
│                                                     │
└─────────────────────────────────────────────────────┘

核心组件

组件功能
Docker Engine容器运行时核心
Docker Compose多容器应用编排
Docker Desktop桌面端开发环境
Docker Hub公共镜像仓库
Docker Registry私有镜像仓库
Docker Build镜像构建工具

下一步

现在您已经了解了Docker的基本概念,接下来可以:

基于 MIT 许可发布