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

docker的介绍

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

管理命令

相关推荐
DuelCode22 分钟前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
你想考研啊2 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins
Code blocks2 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins
饥饿的半导体3 小时前
Linux快速入门
linux·运维
杨浦老苏5 小时前
开源服务运行监控工具Lunalytics
docker·群晖·网站监控
还是奇怪6 小时前
Linux - 安全排查 2
linux·运维·安全
牛奶咖啡136 小时前
Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式
运维·服务器·软件安装·linux云计算·scp文件远程传输·vi文件编辑·设置yum的阿里云源
难受啊马飞2.06 小时前
如何判断 AI 将优先自动化哪些任务?
运维·人工智能·ai·语言模型·程序员·大模型·大模型学习
会又不会6 小时前
Jenkins-Email Extension 插件插件
运维·jenkins
电脑能手7 小时前
[保姆级教程] 解决不同局域网电脑无法SSH的问题
运维·ssh·电脑