Docker的介绍及与传统虚拟化技术的区别

时间:2024-04-30 13:03:32

docker的介绍

  • Docker是什么
  • Docker 的核心组件
  • Docker的优点
  • Docker 和传统虚拟化技术的区别
  • 为什么使用Docker?
  • docker的运行机制
    • 运行机制
      • docker pull 执行过程
      • docker run 执行过程:
    • 基本命令
    • 管理命令

Docker是什么

docker官网地址
Docker 是一种开源的容器化平台和工具,用于创建、分发和运行容器。它允许开发人员将应用程序及其所有依赖项(如库、环境变量、配置文件等)打包成一个独立的、可执行的单元,称为 Docker 镜像。这些镜像可以在不同的环境中进行部署和运行,确保应用程序在各种环境中具有一致的行为。

Docker 的核心组件

  • Docker 镜像(Docker Image):
    Docker 镜像是一个只读的模板,包含了运行应用程序所需的所有文件系统、库、环境变量和配置等。镜像可以通过 Dockerfile 文件来定义,其中包含了构建镜像所需的指令和配置。

  • Docker 容器(Docker Container):
    Docker 容器是 Docker 镜像的运行实例。每个容器都是一个独立的、轻量级的运行环境,其中包含了应用程序及其依赖项。容器可以被启动、停止、删除等,提供了一种隔离的运行环境,使应用程序之间互不干扰。

  • Docker 引擎(Docker Engine):
    Docker 引擎是 Docker 的运行时环境,负责管理和执行容器。它包括了一个守护进程(Docker daemon),用于监控和管理容器的生命周期,以及一个命令行工具(Docker CLI),用于与 Docker 引擎进行交互。

Docker的优点

灵活性:Docker 可以打包应用程序及其依赖项,使其成为一个独立的、可移植的单元,并可以在不同的环境中运行,包括开发环境、测试环境和生产环境等。

轻量级:Docker 容器相对于传统的虚拟机更轻量级,启动和停止速度快,占用资源少,可以更高效地利用物理服务器的计算资源。

隔离性:每个 Docker 容器都是相互隔离的运行环境,使应用程序之间互不干扰,并提供了一定程度的安全性和保护机制。

可扩展性:Docker 可以很容易地扩展应用程序,通过在多个容器之间分发负载和横向扩展容器实例,以满足不同的需求。

生态系统:Docker 拥有庞大的开源社区和丰富的生态系统,提供了大量的公共镜像和工具,方便开发人员快速构建和部署应用程序。

Docker 和传统虚拟化技术的区别

在这里插入图片描述

资源利用率:传统虚拟机在物理服务器上模拟完整的操作系统,并为每个虚拟机提供独立的资源(如内存、处理器等),这导致了较高的资源消耗和低效的利用率。而 Docker 则共享主机操作系统的内核,每个 Docker 容器只需在其上运行的应用程序所需的资源,因此可以实现更高的资源利用率。

启动时间和性能:传统虚拟机需要启动完整的操作系统,并在其中运行应用程序,因此启动时间较长。而 Docker 容器是基于镜像的,启动速度非常快,因为它们直接在主机操作系统上运行,并与主机共享内核。这使得 Docker 在快速部署和扩展方面具有优势,并提供更好的性能。

隔离性:虚拟机提供了较高的隔离性,每个虚拟机拥有独立的操作系统和内核,应用程序之间互相隔离。而 Docker 容器共享主机操作系统的内核,它们在一个共享的用户空间中运行,提供了轻量级的隔离,但并不像虚拟机那样完全隔离。

部署和管理:传统虚拟机需要安装和管理完整的操作系统和应用程序栈,需要更多的配置和维护工作。相比之下,Docker 则使用镜像来打包应用程序及其依赖项,简化了部署和管理过程。Docker 提供了一致的开发、测试和生产环境,并提供了丰富的工具和命令行接口来管理容器。

总体而言,Docker 更适合于轻量级的应用程序打包和部署,以及快速开发、测试和交付的需求。虚拟机则适用于运行较重的应用程序、需要更高隔离性和安全性的场景。实际应用中,Docker 和传统虚拟机可以结合使用,以满足不同的需求和场景。

为什么使用Docker?

Docker 的出现主要是为了解决以下问题:“在我的机器上运行正常,但为什么到你的机器上就运行不正常了?
平常开发的时候,项目在本地跑的好好的,但是其他人想要在他的电脑上去跑你的应用程序,但是却跑不起来,
他得配置数据库,Web 服务器,插件啥的,非常不方便。Docker的出现解决了这些问题

对于开发人员:可以为开发团队提供一个完全一致的开发环境
对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
对于运维人员:在部署时,可以实现应用的无缝跨平台移植

docker的运行机制

运行机制

docker pull 执行过程

  • 客户端将指令发送给docker daemon(Docker 守护进程)
  • docker daemon 先检查本地images中有没有相关的镜像
  • 如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地

docker run 执行过程:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系(简版linux系统),并在只读的镜像层外面挂载一层可读写层
  • 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个 ip 地址给容器
  • 执行用户指定的应用程序

基本命令

  • docker 帮助命令:docker --help
  • 查看系统内核:uname -r
  • 启动docker :systemctl start docker
  • 查看docker版本: docker verison
  • 显示docker系统的信息:docker info

管理命令

在这里插入图片描述