👏大家好!我是和风coding,希望我的文章能给你带来帮助!
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝点击 我的主页 还可以看到和风的其他内容噢,更多内容等你来探索!
📕欢迎参观我的个人网站:Gentlewind
文章目录
- Docker简介
- 什么是Docker?
- 为什么要使用Docker?
- Docker和虚拟机的区别
- Docker的核心概念
- Docker的安装
- Docker的体系结构
- 容器化和Dockerfile
Docker简介
什么是Docker?
Docker是一个用于构建(build),运行(run),传送(share)应用程序的平台
- 它可以将我们的应用程序连同运行时环境,依赖包和第三方软件库,配置文件等等打包成"集装箱",通过这个小鲸鱼(也就是Docker)运输到我们需要的地方
为什么要使用Docker?
假如我们现在想要搭建一个目前主流的前后端分离项目
我们将使用到:
- 前端Vue:搭建网站的界面
- 后端SpringBoot:提供各种服务以及接口
- 数据库MySQL:来存储数据
而假如我们没有Docker,我们的操作步骤是:
- 安装NodeJS环境
- 安装各种npm依赖
- 安装Java运行时环境
- 安装各种第三方依赖
- 安装MySQL数据库
- 配置环境变量
- 启动各种脚本,服务
这样才能将我们的项目运行起来😢
而如果项目再大一点,我们还需要:
- 安装配置Redis缓存
- 安装配置Nginx负载均衡
- 以及各种微服务框架…
是不是已经感觉到头大了?别急,还没完!因为这还只是在开发环境
如果到了测试环境,那么我们需要在新的环境重头再来一遍!
而如果有了Docker
那么我们只需要把应用装进集装箱,如果你在开发环境运行成功了,那么运输到测试环境也是可以运行成功的
Docker和虚拟机的区别
相信大家应该都用过这些常见的虚拟机软件
- 这是通过一种叫做虚拟化的技术来实现的
虚拟化技术
是一种可以将物理资源虚拟为多个逻辑资源的技术。它可以将一台物理服务器虚拟为多个逻辑服务器,每个逻辑服务器都有自己的操作系统,cpu、内存、硬盘、网络接口等等。它们之间是完全隔离的,可以独立运行
作用:可以将一台服务器的计算能力,存储能力,网络资源分配多台虚拟服务器,实现多台服务器的功能
缺点:每台虚拟服务器都需要占用大量计算机资源,且启动速度慢。并且在实际应用中,我们使用的往往是操作系统的一个功能,却需要启动整个操作系统,造成资源的浪费
了解了虚拟机之后,我们再来看一下容器技术
容器
注意:Docker和容器是两个概念,Docker只是容器的一种实现,是一个容器化的解决方案和平台;而容器也是一种虚拟化技术,和虚拟机类似,是一个独立的环境。
和虚拟机不同的是:容器不需要启动整个操作系统,而是利用宿主机的操作系统,因此启动速度非常快,占用资源也非常少,减少了资源的闲置和浪费。
Docker的核心概念
学习Docker的关键,是要理解Docker中的这几个概念:
- 镜像
- 容器
- 仓库
**镜像:**是一个只读的模板,用来创建容器
**容器:**是Docker的运行实例,提供了一个独立的可移植的环境,可以在这个环境中运行应用程序
💡等等,听到这里,你是否觉得很熟悉?
没错,如果你学习过Java,你会发现镜像和容器的关系,就像Java中类和实例的关系一样。
我们可以定义一个类中有多个属性和方法,这个定义好的类就是一个模板,我们可以根据这个模板创建多个实例,这些实例就是这个类的对象。
对应到Docker中:镜像就是这样一个模板,而容器就是实例,容器可以有多个。
而如果你没接触过Java,我们举个生活中的例子:镜像就类似一个食谱,我们可以根据这个食谱做出多个一模一样的菜出来(也就是创建多个容器),如果你把食谱分享给你的朋友,那么你的朋友也可以做出同样的菜出来。
那么如何将食谱分享给别人呢?这就要用到仓库
**仓库:**是用来存储镜像的地方
目前最流行的Docker公共仓库是Dockerhub,用来集中存储和管理Docker镜像,我们可以在这里下载各种镜像,也可以将自己的镜像上传到这里。这样就实现了镜像的共享和复用。
拿刚刚的话来说,如果你发明了一道非常美味的菜肴,你就可以上传食谱到Docker仓库中,这样别人就可以根据这个食谱做出一模一样的菜肴了
Docker的安装
直接在浏览器搜索Docker,进入官网点击下载即可,下载后需要重启
唯一需要注意的是如果是在Windows上安装需要开启虚拟化,如何开启可自行百度
Docker的体系结构
Docker使用client-server架构模式。客户端通过Socket或RESTful API与Docker daaemon进行通信
Docker daaemon是Docker服务端的守护进程,管理Docker的各种资源,又是后台进程,对客户端发送的请求进行处理,并将处理结果返回给客户端
我们在命令行发出的Docker命令都是有它处理返回给客户端的
容器化和Dockerfile
将应用程序打包成一个容器,然后在容器中运行应用程序的过程
它有三个步骤:
- 创建一个Dockerfile(来告诉Docker构建镜像所需要的步骤和配置)
- 使用Dockerfile构建镜像
- 使用镜像创建和运行容器
Dockerfile
就是一个文本文件,用来告诉Docker如何构建镜像。里面包含了我们应用环境所需要的所有命令,例如
npm run
,各种依赖,第三方库,环境变量等等