Docker说明、安装(Windows10家庭版)
Docker是什么?它是干嘛的?
开始,我就知道别人说是用来加工tar包的。tar包?又是干什么用的?
tar包,个人粗俗的理解就是一个环境,里面有能让程序运行起来所需要的依赖。比如我们常使用anaconda定义一个环境:
conda create --name *** python=*.*.* #如conda create --name env_name python=3.7
这里的env_name 就是一个环境(名),python就是一个依赖。当然,一个程序特别是深度学习的肯定还会用到其他依赖,如pytorch、tensorflow、pillow、opencv等等,这些依赖都可以安装在env_name这个环境下。
如果现在有另外一台机子没有安装python,更不可能有上面的依赖,而我想把一个能在env_name 环境下运行的程序放在这个机子上运行起来应该要怎么做呢?你可能会想到在这个机子上安装与env_name一样的依赖,然后运行该程序,确实可以这样做。但是否也可以通过类似镜像的方式将env_name 环境直接移植到这台机子上呢?答案是可以的。先来说下tar包:
tar包就是将环境(有很多依赖)打包成.tar形式的文件格式,如tar包可以命名为cuda11.1-torch1.10.1-py37.tar,这个.tar文件里有env_name环境里的所有依赖。有了tar包之后就可以将这个tar包导入到Docker中,更确切的说,是使tar包在Docker里生成一个镜像,这样就能让相同的程序在这台机子上运行了。
更灵活的是,Dokcer(执行的linux语句,但这个Docker可以在windows里安装,相当于一个虚拟机),可以对已有的镜像(其实还要生成容器,不用担心容器又是什么,你暂时理解镜像相当于Java中的类,容器是这个类实例化后的对象,即容器是继承了镜像的所有东西,当然也就包含了所有依赖)进行二次依赖的安装,比如cuda11.1-torch1.10.1-py37.tar里缺少tqdm这个依赖,那么Docker可以在容器里安装tqdm。
现在来看看百度百科对Docker的解释:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
再联系我在上面作出的讲解,您是否对Docker有了较为清晰的认知呢。
Docker安装(Windows10家庭版)
Windows10家庭版是我电脑的系统
安装Dokcer之前,我们先安装wsl2(适用于Windows的Linux子系统 ),因为Docker是基于linux运行的,wsl2是wsl的升级版:
-
在 Windows功能 中勾选 适用于Linux的Windows子系统 和 虚拟机平台 选项
-
安装wsl
安装wsl有个前提条件,必须运行windows10版本2004及更高版本(内部版本19041及更高版本)或Windows11。若要检查 Windows 版本及内部版本号,按下 Windows + R,然后键入“winver”,选择“确定” 。 可通过选择“开始”>“设置” >“Windows 更新”>“检查更新”来更新到最新的 Windows 版本。
(1)在管理员方式运行PowerShell或Windows命令提示符中输入wsl --install
,然后重启计算机来安装运行适用于Linux的Windows子系统(wsl)所需的全部内容。
但我的电脑在输入wsl –install后弹出以下内容
经百度发现这是电脑已经有wsl了,若担心没有,可以更新wsl ,命令为wsl –update
,会自动下载并更新wsl的。
若正常,在输入wsl –install后应该是以下界面(我从网上截取的,所以跟我的终端界面看起来不一样)
(2)Linux内核更新包
[https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi]
点击后下载并双击执行就好。
(3)将WSL2设置为默认版本
控制台输入wsl --set-default-version2
至此,有关wsl2的安装已完成。 -
安装Docker
(1)下载安装包
官方下载链接:https://docs.docker.com/desktop/windows/install/
(2)安装
点击刚下载的安装包,勾选如下选项。
巧的是我Configuration窗口没有Install required Windows components for WSL2这个选项(图片是网上找的,所以还有)。我担心电脑安装wls2没成功,重启电脑后发现还是没有。但后来发现不影响,后续会知道。
Docker默认安装在C:\Program Files目录下。
(3)选择wsl2作为Docker的运行平台
点击桌面上的Docker图标,勾选Settings > General > use the WSL2 based engine, 使用基于WSL2的引擎,点击Apply&Restart,等待Docker重启。本来这个选项选上后应该是蓝色显示的,但我的是灰色,说明Docker就是默认使用wsl2了,这也表明上面的Configuration没有这个选项的原因了,因为我的windows默认使用wsl2。
(4)查看Docker是否在wsl2系统下运行的
在终端运行wsl -l -v
这时候你的Docker就可以正常使用了。
(5)docker-desktop-data 路径转移
在用Docker之前,要先把Docker保存的数据(docker-desktop-data 如镜像、容器)要另存到其他盘上,因为很占空间,怕C盘吃不消。
执行下面步骤前,先将Docker程序退出。然后进入终端: -
i .停止虚拟机
# 停止虚拟机
wsl --shutdown
# 停止虚拟机的一部分, 如 docker-desktop-data
wsl --terminate docker-desktop-data
- ii .导出映像文件
# 先在空间较大的盘上创建存放docker-desktop.tar的文件夹。
wsl --export docker-desktop-data E:/WSL/docker-desktop-data/docker-desktop.tar
- iii .注销原来的 Docker 镜像
wsl --unregister docker-desktop-data
- iv .从tar 文件,将导出的 Docker 镜像再导入回wsl
wsl --import docker-desktop-data E:/WSL/docker-desktop-data E:/WSL/docker-desktop-data/docker-desktop.tar
- v .重启docker完成
导入完成确认镜像没问题后导出的.tar文件可以删除
del E:/WSL/docker-desktop-data/docker-desktop.tar
我把我自己的操作过程放在这里供大家参考:
到此,Docker的安装已基本结束了。有关Docker的实战,等后期有时间再做补充…