Docker简介 #

什么是Docker? #

Docker是一个开源的应用容器引擎,基于Go语言开发,遵从Apache2.0协议开源。Docker可以让开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux或Windows操作系统上。

Docker的发展历史 #

时间 事件
2010年 dotCloud公司成立,专注于PaaS平台
2013年 Docker项目开源,迅速获得关注
2014年 Docker 1.0发布,企业级支持
2015年 Docker公司成立,生态系统快速发展
2017年 Docker企业版发布,Kubernetes集成
至今 成为容器化技术的事实标准

Docker vs 传统虚拟化 #

架构对比 #

text
传统虚拟机架构:
┌─────────────────────────────────────┐
│           应用程序 A                 │
│  ┌─────────────────────────────┐    │
│  │        Guest OS             │    │
│  └─────────────────────────────┘    │
│            Hypervisor               │
│  ┌─────────────────────────────┐    │
│  │        Host OS              │    │
│  └─────────────────────────────┘    │
│           物理服务器                 │
└─────────────────────────────────────┘

Docker容器架构:
┌─────────────────────────────────────┐
│  App A  │  App B  │  App C  │  App D │
├─────────┼─────────┼─────────┼────────┤
│  Libs   │  Libs   │  Libs   │  Libs  │
├─────────────────────────────────────┤
│            Docker Engine            │
├─────────────────────────────────────┤
│            Host OS                  │
├─────────────────────────────────────┤
│           物理服务器                 │
└─────────────────────────────────────┘

主要区别 #

特性 传统虚拟机 Docker容器
启动时间 分钟级 秒级
资源占用 GB级别 MB级别
性能 接近原生 接近原生
隔离性 完全隔离 进程级隔离
操作系统 需要完整OS 共享宿主内核
迁移成本 较高 较低

Docker的核心优势 #

1. 一致性环境 #

bash
# 开发环境
docker run -d -p 8080:80 myapp

# 测试环境
docker run -d -p 8080:80 myapp

# 生产环境
docker run -d -p 8080:80 myapp

2. 快速部署 #

bash
# 传统部署: 需要安装依赖、配置环境
apt-get install nodejs
apt-get install npm
npm install
npm start

# Docker部署: 一条命令
docker run -d myapp

3. 资源隔离 #

每个容器拥有独立的:

  • 文件系统
  • 网络配置
  • 进程空间
  • 资源限制

4. 版本控制 #

bash
# 镜像版本管理
docker tag myapp:v1.0 myapp:v1.1
docker push myapp:v1.1

Docker的应用场景 #

1. 应用打包与分发 #

将应用及其依赖打包成镜像,实现"一次构建,到处运行"。

2. 微服务架构 #

每个微服务运行在独立容器中,便于开发、部署和扩展。

text
┌─────────────────────────────────────┐
│            负载均衡器                │
└───────────────┬─────────────────────┘
                │
    ┌───────────┼───────────┐
    │           │           │
┌───▼───┐   ┌───▼───┐   ┌───▼───┐
│用户服务│   │订单服务│   │支付服务│
└───────┘   └───────┘   └───────┘

3. 持续集成/持续部署(CI/CD) #

yaml
# GitLab CI示例
stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - docker build -t myapp:$CI_COMMIT_SHA .
    - docker push myapp:$CI_COMMIT_SHA

test:
  stage: test
  script:
    - docker run myapp:$CI_COMMIT_SHA npm test

deploy:
  stage: deploy
  script:
    - docker pull myapp:$CI_COMMIT_SHA
    - docker-compose up -d

4. 开发环境标准化 #

yaml
# docker-compose.yml
version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
  redis:
    image: redis

5. 快速扩容 #

bash
# 快速扩展服务实例
docker-compose up -d --scale web=5

Docker生态系统 #

核心组件 #

组件 说明
Docker Engine Docker核心引擎
Docker Hub 公共镜像仓库
Docker Compose 多容器编排工具
Docker Swarm 容器集群管理
Docker Registry 私有镜像仓库

相关工具 #

工具 说明
Kubernetes 容器编排平台
Helm Kubernetes包管理
Harbor 企业级镜像仓库
Portainer Docker可视化管理

小结 #

Docker通过容器化技术解决了传统应用部署中的环境一致性问题,具有轻量、快速、可移植等特点。它已经成为现代软件开发和运维的标准工具,广泛应用于微服务架构、CI/CD、开发环境标准化等场景。

下一步 #

接下来,让我们学习 Docker安装与配置,在你的系统上安装Docker环境。