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