win11家庭版使用自带的Linux子系统并安装docker【全网整合版】

1. 电脑配置项

开发者选项

设置->系统->开发者选项
在这里插入图片描述

启用或关闭windows功能

控制面板->卸载程序->启用或关闭windows功能
在这里插入图片描述
勾选适用于Linux的Windows子系统和虚拟机平台并重启电脑(首次勾选选项时电脑提示重启)

Hyper-V

关键点:win11家庭版在启动或关闭windows功能中没有Hyper-V选项显示

  1. 将下述代码添加到记事本中,并另存为Hyper-V.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
  1. 找到Hyper-V.cmd文件图标,在右键菜单中点击:以管理员身份运行
    在这里插入图片描述
  2. 然后弹出一个 用户帐户控制 - Windows命令处理程序 对话框,我们点击:是
  3. 然后系统自动进行Windows命令处理,我们等待处理完成以后,【这个过程中不要关闭窗口或者关机】在最末处输入:Y,电脑自动重启,进行配置更新
    在下载安装的过程中,可能会卡住,尝试按按【回车键】
    在这里插入图片描述
  4. 电脑重启之后,在window管理工具中可以看到已经成功安装了Hyper-V。
    这样就可以在不用重装专业版系统的情况下,使用Hyper-V虚拟机了

检查一下:控制面板 -> 程序 -> 卸载程序 -> 启用或关闭Windows功能

对比上面的图可以发现是多出来Hyper-V的
在这里插入图片描述

在BIOS中启用虚拟化技术

这个模块也可以选择不操作(因为博主的联想电脑没办法进入到BIOS设置当中,不知道为啥),也可通过查找电脑型号问chartGPT自己的电脑是否已经启动虚拟化技术(一般来说win11的电脑肯定是启用的)

检查设备型号:通过系统自带功能查看
点击“开始”图标:在桌面上找到并点击左下角的“开始”图标。
选择“设置”:在弹出的菜单中,选择“设置”选项。
选择“系统”:在设置窗口中,找到并点击“系统”选项。
点击“关于”选项卡:在系统页面中,找到并点击“关于”选项卡。
查看设备规格:在“关于”页面中,你将能够找到设备规格,包括电脑的配置和型号信息。

步骤一:进入BIOS设置
重启电脑。
当电脑屏幕亮起logo时,通常会出现一个提示,告知你按哪个键可以进入BIOS设置。常见的按键包括F2、F12、Del、Esc等,但具体取决于你的电脑品牌和型号。
按住相应的键,直到进入BIOS设置界面。
步骤二:找到虚拟化技术选项
在BIOS设置界面中,使用键盘上的方向键和Enter键来导航和选择。
查找与虚拟化技术相关的选项。这通常被称为“Intel Virtual Technology”(对于Intel处理器)或“AMD-V”(对于AMD处理器)。这个选项可能在不同的位置,如“Configuration”、“Advanced”、“Security”等。
步骤三:启用虚拟化技术

找到虚拟化技术选项后,选择它并按Enter键进入子菜单。
在子菜单中,找到“Enabled”选项并按Enter键选择它。如果选项是“Disabled”,则需要将其更改为“Enabled”。
步骤四:保存并退出BIOS

在BIOS设置界面的底部或侧边,找到保存并退出的选项。这通常是“Save & Exit”或类似的描述。
选择该选项并按Enter键,然后按照屏幕上的提示操作,通常是按F10键。

WSL2

  1. 以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  1. 以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 下载 Linux 内核更新包:(关键点)
    X64的内核包 : https://link.zhihu.com/?target=https%3A//wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
    ARM64的内核包 : https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi
    点击链接即可!!!

  2. 运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

  3. 安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。
    (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。不过一般是推荐WSL2,因为WSL2是完整的Linux内核也为后续运行docker做准备)
    将 WSL 2 设置为默认版本:
    打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:

wsl --set-default-version 2

2. 安装Ubuntu

在Microsoft Store中选择自己想要下载的版本

在这里插入图片描述
首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。
然后,需要为新的 Linux 分发版创建用户帐户和密码。
当然,如果你出现下面的报错并且按下键盘就闪退 别担心
在这里插入图片描述
再次打开PowerShell 执行以下命令

wsl --set-default-version 1 

再重启电脑
打开Ubuntu 会让你输入用户名(自定义)和密码(自定义)

Ubuntu可以启动后再换回wsl 2

wsl --set-default-version 2 

Powershell上查看Ubuntu

之前的Ubuntu配置好后可以在Powershell当中查看到
使用 wsl -l -v命令列出已安装的子系统的名称和版本。

PS C:\WINDOWS\system32> wsl -l -vNAME                   STATE           VERSION
* Ubuntu-20.04           Running         2docker-desktop-data    Stopped         2docker-desktop         Stopped         2

可以看到Ubuntu-20.04 的版本是WSL2的

在Powershell当中执行wsl命令即可切换到安装的子系统Ubuntu下

PS C:\WINDOWS\system32> wsl -d Ubuntu-20.04  
hx@LAPTOP-H2EI4I6A:/mnt/c/WINDOWS/system32$

设置root的密码(可以不操作)

新安装的Ubuntu系统默认root密码是没有的,执行一些命令需要sudo提权 所以推荐先设置一下

sudo -i

切换到root用户

passwd

即可配置root的密码

使用Ubuntu

打开下载好的Ubuntu 20.04 LTS 开始使用(不过多介绍)

hx@LAPTOP-H2EI4I6A:~$ ll
total 52
drwxr-xr-x 6 hx   hx    4096 Jun 20 16:24 ./
drwxr-xr-x 3 root root  4096 Jun 20 09:17 ../
lrwxrwxrwx 1 hx   hx      24 Jun 20 12:47 .aws -> /mnt/c/Users/Lenovo/.aws/
lrwxrwxrwx 1 hx   hx      26 Jun 20 12:47 .azure -> /mnt/c/Users/Lenovo/.azure/
-rw------- 1 hx   hx    2004 Jun 21 09:06 .bash_history
-rw-r--r-- 1 hx   hx     220 Jun 20 09:17 .bash_logout
-rw-r--r-- 1 hx   hx    3771 Jun 20 09:17 .bashrc
drwx------ 2 hx   hx    4096 Jun 20 12:47 .cache/
drwxr-xr-x 6 hx   hx    4096 Jun 20 13:38 .docker/
drwxr-xr-x 2 hx   hx    4096 Jun 20 09:17 .landscape/
-rw-r--r-- 1 hx   hx       0 Jun 21 08:55 .motd_shown
-rw-r--r-- 1 hx   hx     807 Jun 20 09:17 .profile
-rw-r--r-- 1 hx   hx       0 Jun 20 09:58 .sudo_as_admin_successful
-rw------- 1 hx   hx   10395 Jun 20 16:24 .viminfo
drwxr-xr-x 4 hx   hx    4096 Jun 20 15:34 test/
hx@LAPTOP-H2EI4I6A:~$ pwd
/home/hx

3. Ubuntu上安装docker

3.1 确定 CPU

可以看到我们的是 X86_64,是支持的,如果是 arm 一般会显示aarch64

root@ecs-144421:~# uname -a
Linux 139-159-150-152 5.4.0-100-generic #113-Ubuntu SMP Thu Feb 3 
18:43:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

3.2 确定操作系统版本

本次我们使用的是 Ubuntu 20.04

hx@LAPTOP-H2EI4I6A:~$ cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS"
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

3.3 配置 docker 下载源

#curl 命令安装
sudo apt install curl -y
#创建 gpg key 目录
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg  

url 命令从 Docker 官方网站下载 GPG 密钥,并通过 gpg --dearmor 将其转换为可用的密钥格式并存放在 /etc/apt/keyrings/docker.gpg 文件中。推荐通过国内的代理或 VPN 来加速这个请求(否则可能会出现如下报错)或者找国内的镜像源(自行解决o( ̄ヘ ̄o#),因为博主没找到)

curl: (7) Failed to connect to download.docker.com port 443: Connection timed out
gpg: no valid OpenPGP data found.
echo \  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | \  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

设置Docker仓库:这里我添加了清华大学的镜像源(单纯从官网下载太慢了)

更新包列表:
每次更新完配置都请执行下述命令

sudo apt update

安装

hx@LAPTOP-H2EI4I6A:/etc/apt/keyrings$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
containerd.io is already the newest version (1.6.33-1).
docker-buildx-plugin is already the newest version (0.14.1-1~ubuntu.20.04~focal).
docker-buildx-plugin set to manually installed.
docker-ce-cli is already the newest version (5:26.1.4-1~ubuntu.20.04~focal).
docker-ce is already the newest version (5:26.1.4-1~ubuntu.20.04~focal).
docker-compose-plugin is already the newest version (2.27.1-1~ubuntu.20.04~focal).
0 upgraded, 0 newly installed, 0 to remove and 143 not upgraded.

自动启动配置

#配置加载
sudo systemctl daemon-reload 
#启动服务
sudo systemctl start docker 
#开启启动
sudo systemctl enable docker
#查看服务状态
sudo systemctl status docker

当看到如下图所示时,那么docker服务就算是启动了
在这里插入图片描述
执行 hello-world 可以看到 Hello from Docker,表面 docker 服务正常
如下所示就是docker安装成功

root@LAPTOP-H2EI4I6A:~# sudo docker run hello-worldHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

4. windows上安装DokerDesktop来管理(可选)

这个直接去DokerDesktop官网去下载即可(加载不出来可以选择挂梯子或者是去网盘下载)

可能遇到的问题1:

一直在转圈圈,连不上(多尝试几次,毕竟是国外的,要么就挂梯子)
在这里插入图片描述

问题2:

总是遇到如下报错,怎么解决

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

很简单把DockerDesktop重新启动即可
再次执行

root@LAPTOP-H2EI4I6A:~# docker version
Client: Docker Engine - CommunityVersion:           26.1.4API version:       1.43 (downgraded from 1.45)Go version:        go1.21.11Git commit:        5650f9bBuilt:             Wed Jun  5 11:29:19 2024OS/Arch:           linux/amd64Context:           defaultServer: Docker DesktopEngine:Version:          24.0.6API version:      1.43 (minimum version 1.12)Go version:       go1.20.7Git commit:       1a79695Built:            Mon Sep  4 12:32:16 2023OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.22GitCommit:        8165feabfdfe38c65b599c4993d227328c231fcarunc:Version:          1.1.8GitCommit:        v1.1.8-0-g82f18fedocker-init:Version:          0.19.0GitCommit:        de40ad0

可以看到现在就连接上DokerDesktop了

使用docker下载镜像太慢的解决办法

安装过程就是一路下一步就对了,打开主界面(不登录也可以进入主界面,点击跳过注册就行),进入主界面后,点击右上角小齿轮, 点击Docker Engine选项卡
在编辑框的json代码段中添加你要配置的国内镜像源,我的如下,其中阿里云镜像服务加速器地址(如下代码中的 “https://xxxx.mirror.aliyuncs.com”),你用你自己的,登录阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,在
容器镜像服务/镜像加速器 中找到加速器地址,复制粘贴即可。
在这里插入图片描述

在Docker Desktop的设置中找到Doker Enigne 中添加 对应的自己的镜像加速器的内容

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

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

相关文章

不知道怎么下载原版系统,这几个原版系统下载网站可以帮你

电脑是我们日常办公生活中必备不可少的设备,无论是个人使用还是企业部署,拥有一个稳定、安全且纯净的操作系统对于保障数据安全和提升使用体验至关重要。然而,网络上充斥着各种二次打包的系统版本,这些版本往往携带了第三方软件或…

C++ 矩阵的最小路径和解法

描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。 数据范围: 1≤𝑛,𝑚≤5001≤n,m≤500&…

【总线】AXI4第四课时:信号描述

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…

Cancer Discovery | 非小细胞肺癌的空间蛋白组学研究再添新篇章

非小细胞肺癌(NSCLC)作为最常见的肺癌亚型,其治疗和预后的改善一直是医学研究的重点。由肿瘤细胞、免疫细胞、成纤维细胞等多种细胞类型组成的肿瘤微环境(TME)已被证实在肺癌的进展、转移和治疗响应中扮演着重要的角色…

如何开发一套基于C#和.NET 6.0手术麻醉系统? 手术麻醉系统源码

如何开发一套基于C#和.NET 6.0手术麻醉系统? 手术麻醉系统源码 基于C#和.NET 6.0开发的手术麻醉系统是一个涉及多个层面的复杂项目。 以下是一个概述性的步骤,帮助你开始这个项目: 一、项目规划和需求分析 1、确定项目目标:明确…

如何使用 ArcGIS Pro 和 Landsat 8 影像计算叶绿素指数和全球环境监测指数

GIS 工具和技术的出现极大地帮助了识别、量化和解决问题。GIS 还通过研究可能的情况并实施预防方案提供了一种主动的解决方案。多年来,GIS 通过电信和网络服务、事故/事件分析、城市规划、交通规划、环境影响评估、洪水损失估计、自然资源管理、环境健康和安全、植被…

TikTok API接口——获取TikTok用户QRcode二维码

一、引言 在数字化时代,QRcode二维码已经成为连接线上线下的重要桥梁。在社交媒体领域,TikTok作为短视频领域的佼佼者,用户量庞大且活跃度高。为了满足用户之间更便捷的互动需求,我们特别开发了一款针对TikTok平台的接口&#xf…

聊聊最近比较火的AI产品做互联网算法备案

今年AI🔥了,而且是大火,导致监管部门相继出台相关政策,需要管控下,所以互联网算法备案就自然而然重新被提出来。其实这个互联网算法备案去年就已经开始实施了,去年只有几个大厂比如BAT等互联网巨头等会去弄…

【系统设计】如何权衡范式与反范式设计

一、什么是范式设计与反范式设计 1.1、范式设计(Normalization) 定义: 范式设计是数据库设计中最基础的设计原则之一,它主要通过规范化数据模型,减少数据冗余和数据不一致的问题。 常用的范式: 第一范式…

Linux连接工具MobaXterm详细使用教程

目录 一、MobaXterm的下载 1、访问官网 2、下载便携版 3、启动MobaXterm 二、MobaXterm基本使用设置 1、新建会话 2、使用ssh连接第一个会话 3、设置主密码 4、主界面 5、sftp文件上传下载 6、文件拖拽的上传下载 7.右键粘贴 8、查看服务器监测信息​编辑 9、个…

进军韩国5G市场!移远通信5G模组RG500L-EU率先获得KT、LGU+认证

近日,移远通信工规级5G模组RG500L-EU再传喜讯,率先通过了韩国两大运营商KT和LGU的严格认证。​在此之前,该模组已顺利通过KC认证(韩国法规认证),此次再获运营商认证表明,RG500L-EU已完全满足韩国…

LeetCode LCP 61. 气温变化趋势

别怕麻烦&#xff0c;模拟题有时候就是要多写一些条件&#xff08;或者你思维很活跃找出规律&#xff09;&#xff0c;代码如下&#xff1a; class Solution { public:int temperatureTrend(vector<int>& temperatureA, vector<int>& temperatureB) {int …

斗地主游戏

找了个斗地主的项目&#xff0c;github项目地址&#xff1a;https://github.com/zhuang0/BoYaDDZ/tree/master/BoyaDDZ。在此基础上做些修改和优化&#xff0c;为了方便国内访问&#xff0c;上传到gitee上。 gitee地址: https://gitee.com/zhagnjinaaaa/android-ddz v0.0.1解决…

Linux基础篇

Linux 本文章是在B站的尚课听的&#xff0c;但是由于版本较老&#xff0c;而且是以centOS学习Linux&#xff0c;由于CentOS在10天后就不再更新&#xff0c;被抛弃了&#xff0c;痛定思痛&#xff0c;及时停课。但是又不想浪费笔记&#xff0c;前来保存一下。 文章目录 Linux前…

Jacob代码编写/部署的注意事项集

注意事项一&#xff1a; 慎用 ComThread.InitSTA(); ComThread.Release(); 因为经常会在 ComThread.Release(); 发生阻塞&#xff0c;导致程序一直卡在这里&#xff0c;不能被调用&#xff1b; 建议不要使用这个初始化和释放线程的代码&#xff0c;看似很高级&#xff0c;其…

Swift Combine — zip和combineLatest的理解与使用

Publisher 上还有一些其他的操作&#xff0c;比如 zip 和 combineLatest&#xff0c;能让我们在时序上对控制多个 Publisher 的结果进行类似 and 和 or 的合并&#xff0c;它们在构建复杂 Publisher 逻辑时也十分有用。 zip Publisher 中的 zip 和 Sequence 的 zip 相类似&am…

iOS政策解读之一丨App提交审核前注意事项必知

大家好&#xff0c;我是小编阿文。欢迎您关注我们&#xff0c;经常分享有关Android出海&#xff0c;iOS出海&#xff0c;App市场政策实时更新&#xff0c;互金市场投放策略&#xff0c;最新互金新闻资讯等文章&#xff0c;期待与您共航世界之海。 iOS企业出海所面临的主要挑战…

高速异地组网怎么办理?

在当今信息化时代&#xff0c;跨地域的远程办公、远程教育、远程医疗等需求越来越多。而高速异地组网作为一种解决不同地区之间快速组建局域网的方法&#xff0c;被广泛应用。本文将介绍一款异地组网内网穿透产品——【天联】&#xff0c;并提供其办理流程。 【天联】组网是什…

JMeter详解

一、线程组 作用:线程组就是控制Imeter用于执行测试的一组用户 位置:右键点击测试计划’-->添加 -->线程(用户)--> 线程组 特点: 模拟多人操作线程组可以添加多个&#xff0c;多个线程组可以并行或串行取样器(请求)和逻辑控制器必须依赖线程组才能使用线程组下可以…

Behind the Code:Polkadot 如何实现全球协作与去中心化治理?

2024 年 6 月 16 日&#xff0c;《Behind the Code: Web3 Thinkers》第二季第二集上线。本集中&#xff0c;ChaosDAO 联合创始人兼 Novasama Technologies 首席财务官 Leemo 深入探讨了 Polkadot 生态系统中的全球协作力量&#xff0c;以及这种协作如何推动去中心化治理的创新与…