【Docker 新手入门指南】第二章:架构概述

[复制链接]
发表于 2025-5-22 08:14:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
【Docker 新手入门指南】系列文章目录



  • 【Docker 新手入门指南】第一章:前言
  • 【Docker 新手入门指南】第二章:架构概述


  

【Docker 新手入门指南】第二章:架构概述

一、架构概述

Docker 采用客户端-服务器(C/S)模式,通过各组件协同实现容器化应用的全生命周期管理。核心上风在于:


  • 应用封装性:将应用及其依靠打包为可移植容器
  • 环境同等性:确保应用在差别环境中运行行为同等
  • 资源轻量化:基于操纵系统级虚拟化技能,启动秒级响应
二、容器与镜像的关系

Docker概念对应面向对象模型核心特征镜像(Image)类(Class)只读模板,包含运行环境和应用代码容器(Container)对象(Object)可运行实例,基于镜像创建,支持读写层叠加 三、架构示意图


四、核心工作流程

     五、核心组件剖析

1. Docker 客户端(Docker Client)


  • 定位:用户交互入口,通过CLI发送指令
  • 通讯方式:

    • REST API(默认通过Unix套接字 /var/run/docker.sock)
    • 远程API(需配置TCP端口)

  • 常用命令:
    1. docker run -d --name my_container nginx  # 启动容器
    2. docker build -t my_image .               # 构建镜像
    3. docker exec my_container ls /app          # 进入容器执行命令
    复制代码
2. Docker 守护历程(Docker Daemon)


  • 历程名:dockerd,负责配景任务处置处罚
  • 核心职责:

    • 镜像构建(docker build)与堆栈交互
    • 容器生命周期管理(创建/启动/制止)
    • 网络(Network)和存储(Volume)管理

  • 启动命令:
    1. sudo systemctl start docker  # 系统服务启动
    2. dockerd --experimental       # 带实验功能启动
    复制代码
3. Docker 引擎API(Docker Engine API)


  • 接口类型:RESTful风格,支持HTTP请求
  • 典型用法:
    1. # 查询版本信息
    2. curl --unix-socket /var/run/docker.sock http://localhost/version
    3. # 通过API创建容器(JSON格式请求)
    4. curl -X POST "http://localhost/v1.43/containers/create" \
    5.   -H "Content-Type: application/json" \
    6.   -d '{"Image":"nginx","Name":"api_container"}'
    复制代码
4. Docker 容器(Docker Containers)


  • 技能实现:基于Linux Namespace+Cgroups实现隔离与资源限制
  • 生命周期阶段:
    1. created(创建) → running(运行) → paused(暂停) → stopped(停止) → deleted(删除)
    复制代码
  • 数据持久化:

    • 绑定挂载(Bind Mounts):直接映射主机目录
    • 卷(Volumes):Docker管理的独立存储(推荐方案)

5. Docker 镜像(Docker Images)


  • 构建机制:

    • 分层存储(Layered Storage),每层可复用
    • 基于UnionFS(如AUFS、OverlayFS)实现层叠加

  • 最佳实践:
    1. FROM python:3.9-slim  # 使用官方基础镜像
    2. WORKDIR /app          # 设置工作目录
    3. COPY requirements.txt .
    4. RUN pip install --no-cache-dir -r requirements.txt  # 分层安装依赖
    5. COPY . .
    6. CMD ["python", "app.py"]
    复制代码
6. Docker 堆栈(Docker Registries)


  • 类型划分:

    • 公共堆栈:Docker Hub(默认)、Google Container Registry
    • 私有堆栈:Harbor、Nexus Repository

  • 操纵示例:
    1. docker login -u username docker.io  # 登录公共仓库
    2. docker tag my_image:v1 username/my_image:v1
    3. docker push username/my_image:v1     # 推送镜像
    复制代码
7. Docker Compose(多容器编排)


  • 核心功能:通过docker-compose.yml界说复杂应用
  • 示例配置:
    1. version: '3.8'
    2. services:
    3.   web:
    4.     image: nginx:alpine
    5.     ports:
    6.       - "80:80"
    7.     volumes:
    8.       - static_files:/usr/share/nginx/html
    9.   db:
    10.     image: mysql:5.7
    11.     environment:
    12.       MYSQL_ROOT_PASSWORD: secret
    13.     volumes:
    14.       - db_data:/var/lib/mysql
    15. volumes:
    16.   static_files:
    17.   db_data:
    复制代码
    1. docker-compose up -d  # 后台启动所有服务
    2. docker-compose scale web=3  # 水平扩展web服务到3个实例
    复制代码
8. Docker Swarm(集群管理)


  • 节点类型:

    • Manager节点:负责集群管理和调理
    • Worker节点:实行容器部署任务

  • 集群操纵:
    1. docker swarm init --advertise-addr 192.168.1.100  # 初始化管理节点
    2. docker swarm join --token <token> manager_ip:2377  # 工作节点加入集群
    3. docker service create --replicas 5 --name web nginx  # 创建分布式服务
    复制代码
9. Docker 网络(Docker Networks)


  • 内置网络模式:   模式特点形貌bridge默认模式,容器间通过虚拟网桥通讯host共享主机网络命名空间,无网络隔离none禁用网络,容器仅能本地通讯overlay跨主机通讯,支持Swarm集群
  • 操纵示例:
    1. docker network create --driver bridge my_bridge_net  # 创建桥接网络
    2. docker run -d --network my_bridge_net --name app_container app_image
    复制代码
10. Docker 卷(Docker Volumes)


  • 类型对比:   类型存储位置生命周期管理本地卷Docker管理的存储路径随容器删除自动清理(可配置保留)绑定挂载主机任意路径依靠主机文件系统
  • 最佳实践:
    1. docker volume create my_database_volume  # 创建命名卷
    2. docker run -d \
    3.   -v my_database_volume:/var/lib/mysql \
    4.   --name mysql_container mysql:latest
    复制代码
六、扩展组件



  • Docker Trusted Registry(DTR):企业级镜像安全管理
  • Docker Content Trust(DCT):镜像签名与验证
  • Docker Machine:跨主机环境管理(逐步被Kubernetes替代)
通过明白这些核心组件的协同工作,开辟者可以高效实现应用容器化、集群部署和微服务架构。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表