前言
最近在github上发现很多应用可以使用docker方便的搭建环境并且运行,故准备写一篇文章记录学习过程和心得。
一、为什么需要Docker
1.为了节省资源(历史)
Docker是一种容器。
早期为了运行应用需要在物理设备上安装应用对应的依赖环境(操作系统和对应软件),如运行一些python的应用需要windows或linux系统等(操作系统)和对应的软件,如numpy库。
而一台物理机只能安装一个操作系统,同时某些应用需要同一个软件的不同版本作为支持,故不能运行需要其他操作系统和依赖环境的应用,这会造成一部分物理资源没有被充分利用。
由此产生了虚拟机技术,即将一台物理机划分为多个虚拟机,在虚拟机上运行各种依赖环境不同的应用。
然而虚拟机仍然会产生资源浪费,如运行一些内存需求低的软件没法充分利用虚拟机内存。
所以,我们想到制作一个应用,名称为容器(Docker),就像是冰箱中不同的罐子装不同事物防止气味互相干扰,一个容器装着一个应用运行的所需,其中运行一种依赖环境下的应用,这样应用就能各取所需,在互不干扰的前提下,得到自己所需的物理资源而不需要支出运行一个虚拟机的额外开销。
简单而言,容器只使用支持其中应用运行的物理资源,而不像虚拟机一样需要用资源运行一个完整的操作系统。
2.便于跨平台
如在不同操作系统上,我们要将linux系统上的应用转移到windows系统上上,只需要在windows系统上启动对应的容器即可。
就像是要在一个装满番茄的锅里煮出另一个装满洋葱的锅里煮出的肉的味道,我们就要把肉装在一个装满洋葱的容器里后放入装满番茄的锅里煮(馋)
二、Docker的一些概念
1.Container(容器)
Container(容器)是装着应用的运行环境,并且支持对应应用在其中运行的一个与其他进程隔离的沙箱。
举个例子,系统是一口锅,其中煮着各种食物,而容器中的应用是牛肉,其运行环境是洋葱汤,因为牛肉在洋葱汤中才能发挥香味。容器就好比锅中一个封闭的罐子,里面装着洋葱汤(依赖环境),于是牛肉(应用)就可以在其中单独被煮(运行)。
如一个容器装着运行一个python脚本所需的对应版本的python解释器,tensorflow库等。
2.Image(镜像)
Image(镜像)是存着容器运行所需的一种文件。可以理解成一种创建容器的模板,其中装着运行对应应用所需的脚本,环境变量等。我们可以通过镜像这个模板创建许多互相独立的容器。
还是厨房的例子,镜像就是装着洋葱浓汤宝、牛肉干和怎么在罐子里烹制洋葱牛肉汤秘籍的一个袋子,我们可以通过袋子(镜像)中的材料创造一个独立的烹制牛肉洋葱汤的罐子(容器)。
3.Repository(仓库)
Repository(仓库)是一个集中储存镜像的地方。可以将镜像上传,然后再其他设备用pull命令下载镜像。
如配置好了番茄牛肉汤的袋子(镜像),我们将他交给空中运输机(仓库),当我们身在异地,需要这个袋子来创建番茄牛肉汤的罐子(容器)时,我们呼叫空中运输机(仓库),运输机把袋子(镜像)空投给我们。
三、Docker的安装(Windows)
可以在官网获得安装包:Install Docker Desktop on Windows | Docker Documentation
点击红圈处获得安装包
下载安装包后直接打开安装即可。
1.可能出现的问题及解决方案(WSL2 installation is incomplete)
问题:打开docker后出现
解决方案:
点击报错信息中的蓝色连接下载如下文件并且打开安装
重新打开docker desktop软件,发现没有报错,问题解决。