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

管理命令

相关推荐
深圳安锐科技有限公司22 分钟前
首次接触结构安全自动化监测系统,价格高吗?后期维护?
运维·自动化
冬天vs不冷30 分钟前
Linux用户与权限管理详解
linux·运维·chrome
凯子坚持 c1 小时前
深入Linux权限体系:守护系统安全的第一道防线
linux·运维·系统安全
大熊程序猿1 小时前
K8s证书过期
云原生·容器·kubernetes
摸鱼也很难4 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
woshilys5 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛5 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程6 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
鸠摩智首席音效师7 小时前
Docker 中如何限制CPU和内存的使用 ?
docker·容器
Michaelwubo8 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器