【Docker】Docker简介_运行原理

1、简介

1.1基本概念

  • 容器:容器是Docker的基本部署单元。它是一个轻量级的、独立的运行时环境,包含应用程序及其相关依赖。容器利用Linux内核的命名空间和控制组技术,实现了隔离性和资源管理,使得应用程序在不同的容器中运行不会相互影响。
  • 镜像:镜像是用于创建容器的模板。它包含了一个完整的文件系统,其中包括应用程序运行所需的所有文件、依赖和配置信息。镜像是不可变的,通过Docker镜像可以创建多个相同的容器实例。
  • 仓库:仓库是用于存储和分发Docker镜像的地方。最常用的公共镜像仓库是Docker Hub,上面有大量的官方和社区共享的镜像。此外,还可以搭建私有的镜像仓库,用于存放自己的镜像

1.2用途

  1. 提升开发效率:Docker可以快速搭建开发环境,节省大量时间。通过Docker,开发者可以轻易地让多个服务在有限的内存环境中运行。
  2. 构建环境:对于需要构建源码的场景,Docker可以提供一个预配置好的环境,省去了逐一安装软件的繁琐过程。
  3. 微服务:Docker支持微服务架构,可以将每个服务打包为一个Docker镜像并使用docker-compose来模拟生产环境。
  4. 自动测试:Docker可以与自动化测试紧密集成,通过镜像快速部署测试环境,提高测试效率。
  5. 部署过程:Docker镜像可以实现自我部署,降低硬件要求和应用环境之间的耦合度。
  6. 持续部署:Docker天生适合持续集成/持续部署,可以简化部署流程,加速应用发布。

1.3组成部分

  • DockerClient客户端:用于与Docker守护进程通信,提供用户与Docker的交互界面。
  • Docker Daemon守护进程:在宿主机上运行,接收来自DockerClient的请求,并管理Docker对象(如镜像、容器等)。
  • Docker Image镜像:如上所述,是创建容器的模板。
  • Docker Container容器:如上所述,是Docker的基本部署单元。

1.4Docker 架构

  • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
  • Docker 容器通过 Docker 镜像来创建。
  • 容器与镜像的关系类似于面向对象编程中的对象与类。

|------------|----------|
| Docker | 面向对象 |
| 容器 | 对象 |
| 镜像 | 类 |

2、运行原理

2.1Docker的运行流程

  1. 安装与配置:首先,用户需要在宿主机上安装Docker软件,并进行必要的配置,如设置Docker仓库源、安装Docker软件包等。
  2. 获取镜像:用户可以通过Docker Hub或其他Docker仓库获取所需的镜像。这些镜像可以是官方提供的,也可以是用户自己创建的。
  3. 创建容器 :使用docker run命令,基于指定的镜像创建一个新的容器实例。Docker会加载镜像中的文件系统,并为容器分配所需的资源(如CPU、内存、网络等)。
  4. 运行容器:容器创建后,Docker会启动容器中的进程,并运行应用程序。容器与宿主机之间通过命名空间(Namespace)和控制组(Cgroup)技术实现隔离,确保容器内的进程不会干扰到宿主机或其他容器的运行。
  5. 管理容器 :用户可以使用Docker命令(如docker startdocker stopdocker restart等)来管理容器的运行状态。同时,Docker还提供了丰富的API接口,允许用户通过编程方式管理容器。

2.2核心组件

  1. Docker Client:Docker客户端是用户与Docker守护进程通信的桥梁。用户通过Docker客户端发送请求给Docker守护进程,后者负责执行相应的操作。
  2. Docker Daemon(守护进程):Docker守护进程是Docker架构中的主体部分,它负责接收Docker客户端的请求,并管理Docker对象(如镜像、容器等)。Docker守护进程提供了Docker Server的功能,使其能够接受来自客户端的请求。
  3. Docker Engine:Docker引擎是Docker的核心组件之一,它包含了Docker守护进程、客户端工具(docker命令)和REST API。Docker引擎负责执行Docker内部的一系列工作,如创建容器、运行应用程序等。
  4. Docker Registry:Docker仓库是存储和分发Docker镜像的地方。用户可以从Docker仓库中下载所需的镜像,也可以将自己的镜像推送到仓库中供其他人使用。
相关推荐
特立独行的猫a9 分钟前
低成本搭建鸿蒙PC运行环境:基于 Docker 的 x86_64 服务器
docker·容器·harmonyos·鸿蒙pc
ghostwritten13 分钟前
Kubernetes 网络模式深入解析?
网络·容器·kubernetes
鋆雨无欢丶44 分钟前
docker证书认证问题
运维·docker·容器
阿杰 AJie1 小时前
Docker 容器启动的全方位方法汇总
运维·docker·容器
原神启动11 小时前
K8S(七)—— Kubernetes Pod 基础概念与实战配置
云原生·容器·kubernetes
我的golang之路果然有问题1 小时前
Docker 之常用操作(实习中的)
java·运维·笔记·docker·容器·eureka
Stark-C1 小时前
密码管理器的尽头,是自托管!极空间私有化部署『password-XL』
docker
牛奔1 小时前
Docker 容器无法停止的排障与解决全过程
运维·docker·云原生·容器·eureka
赵文宇(温玉)1 小时前
Docker的生态与商业化
docker·容器·eureka
麦麦大数据1 小时前
F052pro 基于spark推荐的中医古籍知识图谱可视化推荐系统|spark mlib|hadoop|docker集群
docker·spark-ml·spark·知识图谱·可是还·中医推荐·ehcarts