Windows系统安装WSL,并安装docker服务

news2024/11/23 13:11:43

背景

因为工作需要,要在电脑上执行sh脚本,并启动docker服务执行具体逻辑。因为我的电脑是windows系统,对做本任务来说,比较吃力,所以想到使用wsl,让windows电脑具有linux电脑的能力。

什么是 WSL 2


WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。

这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。

单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。
 

操作步骤:

1、开启windows上的wsl能力

命令行方式:

打开 PowerShell 并运行:

启用“适用于 Linux 的 Windows 子系统”可选功能

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

启用“虚拟机平台”可选功能。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

windows界面形式(win10系统)

依次执行:开始》设置》应用》可选功能》更多Windows功能

 

 

 下面这一项我也打开了,没有去验证不开启是否有影响,因为安装的时候比较费力,所以没有再去验证

 2、Microsoft store安装wsl

第一次尝试是从Microsoft store中安装的,但是因为尝试多次也没有办法从WSL1切换到WSL2,所以后面又从命令行安装的,目前回想一下当时的安装过程,因该是修改了第1步的配置后,没有重启电脑导致的(使用命令行模式修改的配置,用图形界面修改配置的时候,会提示重启电脑的)

(1)检查当前电脑上安装的wsl

命令行执行:

wsl  -l -v   

--查看当前电脑上的子系统

version处为2就表示WSL2,为1就表示WSL1

(2)打开Microsoft store

因为要安装ubuntu版本,本处选了ubuntu20.04版本 

 

点击安装按钮就可以进行安装

 安装界面具有迷惑性,会一直停留在如下界面

 其实过个几分钟,在这个页面敲几下键盘就可以,否则会一直不往下执行,我就在这个页面等了半个小时,以为下载比较慢呢,坑

 输入账号和密码就行了

进去之后,就可以使用sudo su -命令,输入当前用户的密码,切换到root用户

(3)版本检查

此时到命令行界面再敲一次wsl -l -v命令,会发现当前版本是1,使用如下命令进行切换:

wsl --set-version Ubuntu-20.04 2

其中Ubuntu-20.04就是使用wsl -l -v命令查到的name属性

升级不成功的话,可以参考官方文档,先升级linux内核

旧版 WSL 的手动安装步骤 | Microsoft Learn

(4)访问windows中目录

在WSL中,可以使用/mnt目录来访问Windows的文件系统。例如,要访问Windows中的C盘,可以在WSL中使用/mnt/c路径。

3、通过wsl命令安装ubuntu

(1)查看可安装版本

wsl --list --online

 (2)设置wsl默认安装版本

wsl --set-default-version 2

(3)开始安装

wsl --install -d Ubuntu20.04

(4)查看版本

wsl -l -v

如果版本号不是2,则使用下方命令切换版本

wsl --set-version Ubuntu-20.04 2

4、安装docker

wsl安装完成后,就可以开始安装docker了,如下命令都是在wls的界面完成,不是windows的命令行界面

 

(1)添加Docker存储库

Docker存储库包含Docker软件包,您需要将其添加到系统中。可以使用以下命令:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

(2)安装Docker

安装最新版本的Docker Engine和containerd。可以使用以下命令:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

(3)验证Docker是否安装成功

sudo docker run hello-world

此处执行这个命令是会报错的,错误信息如下

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

原因是wsl2不支持systemctl命令,而是支持systemed命令

所以需要执行如下命令先启动docker

service docker start

5、下载镜像

(1)登录镜像库

先登录需要下载镜像的镜像库

docker login -u username -p password 镜像库地址

(2)下载镜像

执行docker pull命令即可

6、启动和卸载

至此,wsl2已经安装完毕,docker也已经安装上了,重启电脑后,可以从开始菜单启动wsl

 也可以像卸载普通软件一样,从应用和功能页卸载wsl

参考文档

WSL使用史上最详细教程_勿忘VS初心的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM的类加载的过程以及双亲委派模型

目录 1、加载 (加载字节码文件,生成.class对象) 2、验证(验证Class文件是否符合规范) 3、准备 (为静态变量分配内存并设置变量初始值) 4、解析(初始化常量池中的一些常量&#…

索引的分类

1.唯一索引 给表中某一列设置为了唯一约束(这列不允许出现重复数据)后,数据库会为将这一列设置索引,这个索引叫做唯一索引(主键那一列是一个特殊的唯一索引,不仅要满足唯一索引这一列不可以出现重复数据,而且这一列还…

Android opencv

install cmake cpp folder,新建c项目 获取 OpenCV4Android SDK O4A_SDK 下载,并解压 ~/Downloads/OpenCV-android-sdk$ tree -d -L 2 . ├── apk ├── samples │ ├── 15-puzzle │ ├── camera-calibration │ ├── color-blob-detection │ ├…

文件:IO流

1. 什么是IO /O 即输入Input/ 输出Output的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程;java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一…

Vue学习笔记(7. axios异步请求)

1. axios请求方式 方式1:axios({method:"GET",url:"..."}) 方式2:axios({method:"POST",url:"...",data:"..."}) 方式3:axios.get("url...") 方式4:axios.post(…

Python中的35个关键字

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:零基础入门篇 💬个人格言:不断的翻越一座…

【 Spring MVC 核心功能(二) - 获取参数(下)】

文章目录一、使用 RequestBody 接收JSON对象二、使用 RequestPart 上传⽂件三、获取 Cookie四、获取 Header五、存储和获取 Session5.1 存储 Session5.2 获取 Session一、使用 RequestBody 接收JSON对象 有时客户端会通过 post 方式发送 json 格式的请求,那后端就可…

2.3.5双链表

单链表vs双链表 就是既有前驱指针也有后继指针,由line改为double。 双链表的插入怎么实现? s->nextp->next; p->next->priors s->priorp //把p赋给s的前驱指针指向的位置 p->nexts; 如果p刚好是最后一个元素。 p->next->prio…

基于ArcGIS的电子地图矢量化方法

一、电子地图及纸质地图矢量化的目的 地图数据来源有很多,其中栅格数据数字化是地图数据的重要来源。栅格数据的矢量化包括地理配准以及矢量化。矢量化后的地图数据往往可以为我们的空间统计分析提供实验依据,从而探究地理分布的时空差异性。 空间参考&a…

完整指南:如何安装Man手册

Man手册简介 man手册是Unix和类Unix操作系统中的命令行工具,用于提供关于特定命令、函数和文件的帮助文档。它通常包含命令的语法、选项、参数、示例以及其他相关信息。man手册可以通过在终端输入"man"命令,后跟要查看的命令或函数名称来访问…

huggingface transformer模型介绍

总结: 模型提高性能:新的目标函数,mask策略等一系列tricks Transformer 模型系列 自从2017,原始Transformer模型激励了大量新的模型,不止NLP任务,还包括预测蛋白质结构,时间序列预测。 有些模…

灌区流量监测设备-中小灌区节水改造

系统概述 灌区信息化管理系统主要对对灌区的水情、雨情、土壤墒情、气象等信息进行监测,对重点区域进行视频监控,同时对泵站、闸门进行远程控制,实现了信息的测量、统计、分析、控制、调度等功能。为灌区管理部门科学决策提供了依据&#xf…

Python 无监督学习实用指南:6~10

原文:Hands-on unsupervised learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关…

23年5月高项学习笔记12 —— 干系人管理

过程: 1. 识别干系人:定期识别干系人,分析和记录他们的利益,参与度、相互依赖性、影响力和对项目的潜在的影响 输入:立项管理文件、沟通管理计划、干系人参与计划、需求文件、变更日志、问题日志、协议(协…

今天给大家介绍一篇基于springboot的医院管理系统的设计与实现

临近学期结束,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇基…

2023/4/10总结

线段树 线段树是一种二叉树,通俗易懂的来说就是对于一个线段,我们会用一个二叉树来表示。线段树是一种工具,她能把对区间(线段)的修改与维护从0(N)的时间复杂度变成0(logN)。 如图: 如上图,我…

MYSQL SQL语句优化技术技巧

MySQL是一种流行的关系型数据库管理系统,它提供了各种各样的SQL语句优化技术,下面是一些常见的优化技巧: 1. 使用索引 索引可以大大提高查询性能。在MySQL中,可以使用CREATE INDEX语句在列上创建索引。当查询包含WHERE子句并且…

Google SEO 搜索中心

在公司发展还没有那么成熟的时候,也许你的测试网站是外网可以公开访问的,也许你网站中的机密图片在测试环境(不小心上到正式环境)却被搜索引擎无情抓取,以及有些内部用户才能使用的网址,你并不想被搜索引擎…

明着呼吁暂停,暗着囤积GPU,马斯克暗度陈仓玩得溜

众所周知,此前马斯克纠集了上千名科技工作者对生成式人工智能的深度训练表示了质疑,呼吁暂停继续对深度人工智能的训练,哪怕先暂停六个月。呼吁的尘埃还没有彻底落地,就传出了马斯克已经悄悄地囤积了上万枚GPU,构建自己…

《花雕学AI》15:BingGPT桌面端——尝鲜体验ChatGPT4.0同源技术新Bing的最新成果

引言: 本文将介绍 BingGPT桌面端的开发背景和目的,以及它与新 Bing 的关系和区别。本文还将说明BingGPT桌面端的主要功能和特点,以及如何下载、安装和使用。最后,本文将评价 BingGPT桌面端对于新 Bing 的人工智能聊天功能的推广和…