一张图入门 Docker

一、 Docker架构图解析

1、架构图概览
  • Docker架构图展示了Docker的客户端-服务器模型
    包含Client、Server(DockerDaemon)和Docker Host.
2、核心组件说明
  • Registry(镜像仓库):用于存储和管理Docker镜像,类似于应用程序商店。
  • Images(镜像):可理解为打包好的应用程序模板。
  • Containers(容器):镜像的运行实例,多个容器可基于同一镜像创建,且彼此隔离。
3、Docker Host与Docker Daemon
  • Docker Host
    • 指安装并运行Docker的主机节点。
    • 若在本地电脑或虚拟机中安装Docker,则该设备即为Docker Host.
  • Docker Daemon
    • 是Docker的后台进程,负责管理容器的生命周期。
      ps: 容器生命周期主要包括创建、运行、停止、销毁这几个阶段。首先通过镜像创建容器,然后启动容器让它运行,需要时可以暂停或停止容器,不再使用时将其销毁。
    • 类似于Redis在后台运行的方式,DockerDaemon在后台运行以支持容器操作。
4、客户端操作与命令
  • Client端操作
    • 客户端通过命令与DockerDaemon交互,如build、pull、run等。
  • 典型流程示例
    • 使用pull命令从镜像仓库下载镜像至本地。
    • 使用run命令运行镜像,生成容器实例。
    • docker build 是用来构建 Docker 镜像的。你可以用 Dockerfile 定义镜像的构建过程,包含基础镜像、安装的软件、设置的环境变量这些信息,然后用这个命令按定义来生成镜像。

二、容器隔离机制概述

1、隔离机制核心思想
  • 容器之间互不干扰,具备独立的资源空间
  • 依赖于Linux内核特性:命名空间(Namespace)和控制组(Cgroups)。
2、命名空间(Namespace)
  • 作用
    • 提供隔离机制,使不同容器拥有独立的系统资源视图
  • 涉及的命名空间类型
    • UTS Namespace:隔离主机名和域名。
    • IPC Namespace:隔离信号量、消息队列和共享内存
    • PID Namespace: 隔离进程ID。
    • Network Namespace:隔离网络设备、端口等
    • Mount Namespace:隔离文件系统挂载点。
    • User Namespace:隔离用户和用户组。
3、资源控制(Cgroups/ControlGroups)
  • 作用
    • 限制和监控容器使用的系统资源(如CPU、内存、磁盘I/O等):
  • 核心功能
    • 资源限制:设定资源使用上限。
    • 优先级分配:为不同容器分配资源优先级。
    • 资源统计:监控资源使用情况
    • 任务控制:控制任务的启动、挂起、恢复等。
  • 类比解释
    • 类似家长控制多个孩子吃披萨,控制每人吃多少,防止资源被某一容器独占。

三、Docker的优势与应用场景

1、核心优势
  • 支持Web应用自动打包和发布。
  • 支持持续集成与持续交付(CI/CD),实现自动化部署。
  • 易于部署、调整应用参数,动态配置。
  • 支持快速搭建PaaS平台。
2、典型应用
  • 云服务厂商广泛使用容器化部署。
  • 支持弹性扩展、快速交付与测试部署
3、总结
  • Docker是一个将应用程序与基础架构解耦的容器化开放平台,能显著提升开发与运维效率。
相关推荐
知南x6 分钟前
【Ascend C系列课程(高级)】(1) 算子调试+调优
c语言·开发语言
忆~遂愿8 分钟前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Ro Jace34 分钟前
计算机专业基础教材
java·开发语言
代码游侠1 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
mango_mangojuice1 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
程序员侠客行1 小时前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
devmoon1 小时前
运行时(Runtime)是什么?为什么 Polkadot 的 Runtime 可以被“像搭积木一样”定制
开发语言·区块链·智能合约·polkadot·runtmie
时艰.1 小时前
Java 并发编程 — 并发容器 + CPU 缓存 + Disruptor
java·开发语言·缓存
丶小鱼丶1 小时前
并发编程之【优雅地结束线程的执行】
java
市场部需要一个软件开发岗位1 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全