不管是为了以后多一个工具还是多一份知识,单纯觉得应该了解应该学习。记录一下并不顺利的docker配置之路。
首先附上我的万能师兄的搭建之路,指导意义那是顶呱呱。
ZzPwn01:属于2023年的Pwn环境搭建(Docker in WSL) - 简书 (jianshu.com)
同样是师兄推荐,Docker从入门到实践,通俗易懂,宝藏资源
前言 · Docker -- 从入门到实践 (docker-practice.github.io)
另外就是微软官方提供的手册了,手册为WSL安装提供了详细的指导,这个还是汉化后的,十分友好。
安装 WSL | Microsoft Learn
这部分感觉并不需要太操心,正常的win10感觉都问题不大。这样说的原因是尽管我的电脑给过我太多的惊喜与困惑,还是并不顺利但成功地装好了。
至于《入门到实践》中所提到的windows版本要求,大家可自行核对。其中Hyper-V是否需要开启和安装的问题,个人建议后还是勤快点都装上为好,具体步骤见后续。
很好,系统似乎没什么大问题,接下来,接下来,接下来,不要着急!
让我们先确认WSL的情况。WSL是Windows Subsystem for Linux 的缩写,意思是 linux 版的 window 子系统。让开发人员不需要虚拟机即可直接在 Windows 上运行 Linux 环境,包括大多数命令行工具、程序和应用。在配置docker的过程中,我起初没有确认wsl的安装情况就安装了docker,果然出了一些奇奇怪怪的问题。
《微软WSL手册》提供了详细的安装过程,在根据手册进行安装时,强烈建议大家安装微软终端——windows terminal,使用windows自带的“Microsoft Stroe”搜索“Windows Terminal”安装即可~微软WSL手册
进入管理员模式(这样能够避免一些权限的问题),根据手册进行安装就好
在终端输入
wsl --list --online
可能会出现关于网络的一些报错,这时可能需要挂个梯子之类的,总之是奇妙的网络问题。
指令执行结果如上图所示,接下来就可以根据自己的需要选择对应的linux版本啦:
wsl --install -d Ubuntu-22.04
但是吧我自己并没有使用这个方法,因为总是提示一些网络报错。在这里提供另一条路,点开刚才使用过的Microsoft Store,直接搜索“Ubuntu”,选择自己需要的版本,安装即可。
安装后直接点开开始菜单栏的小图标,配置用户名和密码即可啦!
在终端输入
wsl --list
即可看到自己安装的“适用于Linux的Windos子系统分发”
至此,当我们点开终端,输入wsl并执行后,会直接进入linux的环境中
在安装docker前,让我们再确认几个地方是否准备就绪,以免后面不必要的重启的卸载操作:
1. CPU是否开启虚拟化:任务管理器-->性能
2. Hyper-V是否开启:控制面板--> 程序-->启用或关闭Windows功能
在这里可能会遇到没有Hyper-V的情况,参考文章创建文本文档输入下述代码,并将文件名重命名为Hyper.cmd
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
以管理员身份运行改文件,终端会弹出执行过程和进度,并根据引导输入Y进行计算机重启,重启后“控制面板--> 程序-->启用或关闭Windows功能”就会有Hyper-V的选项啦。
下面就可以下载安装Docker啦,点击安装包链接
下载安装包,根据图形界面引导安装就好啦。至于后期的换源操作,参考师兄的简书还是很有帮助:ZzPwn01:属于2023年的Pwn环境搭建(Docker in WSL) - 简书 (jianshu.com)
除了图形化界面正常显示以外,进入终端输入
docker -v
出现对应的版本号即是安装成功。
另外可以执行
docker run hello-world
成功啦成功啦成功啦!
文末提醒大家,windows 的自动更新可以通过一些补丁插件关闭,但这样也会导致一些奇奇怪怪的问题,比如Microsoft Store无法正常搜索并安装软件等。在安装过程中建议大家把自动更新功能恢复正常。
如果在确认虚拟化和Hyper-V都正常情况下,docker依旧一直转圈圈“Starting engine”,可以在终端输入指令
net stop com.docker.service
net start com.docker.service
检查服务是否开启~
所了解的和遇到的问题就是这么多啦,后续的研究和学习还要继续努力~