win11安装wsl2、wsl1升级至wsl2、安装指定的Linxu分发版本、并通过安装Docker Desktop来安装Docker 、修改Docker-Desktop储存路径更改

环境准备

image-20220809122007244
在这里插入图片描述
image-20220809122153287

安装Linux分发版

wsl官网文档地址:https://learn.microsoft.com/zh-cn/windows/wsl/
注意:

1、wsl2才支持安装docker
2、老版本的win11系统需要手动下载支持wsl的 Linux内核更新包(点击运行即可)

# 通过该命令查看默认的wsl是1还是2,
wsl --status
# wsl --status 输出结果-1
# 如果是1,就需要先看一下  【wsl1升级至wsl2】  ,去升级wsl2所需的linux内核
默认版本: 1

# wsl --status 输出结果-2
# 如果是2,就不用升级了,执行wsl --install -d Ubuntu-20.04命令理论上不会出现问题
默认版本: 2


# 选择要安装的版本(其实也可冲微软商店中下载Linux分发版)
wsl --list --online

# 安装Linux分发版  (Ubuntu-20.04 为下图 NAME)
wsl --install -d Ubuntu-20.04
# 安装完成后
# 首次启动新安装的 Linux 分发版时,会让你输入用户名,以及密码,完成后即为安装成功

image-20220809122317336

问题1、wsl --list --online无法解析服务器的名称或地址

C:\Users\Lenovo>wsl --list --online
无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”中提取列表分发。无法解析服务器的名称或地址
Error code: Wsl/WININET_E_NAME_NOT_RESOLVED


# 解决方法,在win11系统中找到hosts文件添加如下内容
# hosts文件路径: C:\Windows\System32\drivers\etc
185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com


# 验证
C:\Users\Lenovo>wsl --list --online
以下是可安装的有效分发的列表。
使用 'wsl.exe --install <Distro>' 安装。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
Ubuntu-24.04                           Ubuntu 24.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed

问题2、wsl --install -d Ubuntu-20.04执行报错

# 解决方法
# 获取WSL2 Linux内核更新包
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

wsl1升级至wsl2

注意:

1、一般是比较老的系统默认是wsl1,新的系统现在基本默认都是wsl2,具体查看方式通过:wsl --status 命令查。

2、如果是wsl2的话,无需操作这一步

# 检查 WSL 状态(查看有关 WSL 配置的常规信息,例如默认发行版类型、默认发行版和内核版本。)
wsl --status
# 输出结果
默认版本: 1  # 该结果表示默认是wsl1,这时就需要下面的操作了

# 获取WSL2 Linux内核更新包(安装过就不用安装了)(为什么安装这个,官方文档中有,可自行去看)
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

# 将 WSL2 设置为默认版本
wsl --set-default-version 2

# 查看目前的WSL版本
wsl -l -v
# 结果
Name              State            Version
Ubuntu-20.04      Stopped          1

# 执行更新
wsl --set-version Ubuntu-20.04  2
#输出
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。

# 重新查看
wsl -l -v
#输出
Name              State            Version
Ubuntu-20.04      Stopped          2

迁移安装的linux分发版

# 终止正在运行的wsl
wsl --shutdown

# 检查当前wsl是否在运行
wsl -l -v


# 将需要迁移的Linux,进行导出
wsl --export Ubuntu-20.04 D:\Ubuntu.tar
# 导出完成之后,就需要将原有的分发进行卸载
wsl --unregister Ubuntu-20.04
# 然后将导出的文件放到需要保存的地方,进行导入即可
wsl --import Ubuntu-20.04 D:\Ubuntu_2004 D:\Ubuntu.tar --version 2


# 上述操作完成之后能够顺利打开WSL Ubuntu,但是显示以root身份登录

# 更改用于发行版登录的默认用户。 用户必须已经存在于发行版中才能成为默认用户。
# <username>是你前面注册的用户名(如果你的WSL Ubuntu的名称是Ubuntu-20.04,那么对应的可执行文件名为ubuntu2004.exe)
ubuntu.exe config --default-user <username>  # 
# 列如(我执行的命令,仅作参看,不同的系统名字不一样)
ubuntu2004.exe config --default-user zkc


# 看下图进入对应目录,找到ubuntu2004.exe,在此目录进入cmd执行上面的命令

image-20220809132354525

安装Docker Desktop(先看下一步)

image-20220809232948278

image-20220809233014425

修改Docker Desktop默认安装位置(在安装前操作)

注意:如果软件更新了,这个就会失效,因为软件更新会先卸载在安装,在卸载过程中会删除C:\Program Files\Docker目录,这样下方执行的软连接就会失效

# Docker Desktop默认安装位置
C:\Program Files\Docker

# 需要是管理员权限
# 建立软连接的命令如下:(再没安装之前执行)使用Windows PowerShell会报错,使用 命令提示符 没事(如下图),
mklink /j "C:\Program Files\Docker" "D:\Program Files\Docker"
# 看一下对应目录有没有文件夹,
C盘的没有不用管,D盘下没有就创建一下

image-20240326180210497

image-20240326023805217

Docker-Desktop储存路径更改

方式一(推荐)

image-20240326175059672

方式二(老版本最初软件没有提供修改时用的方法)

Docker Desktop的默认存储路径
C:\Users${用户文件}\AppData\Local\Docker

# docker-desktop:保存的是程序
docker-desktop 主要保存的是Docker Desktop本身及其依赖的服务程序,这部分通常指的是Docker引擎以及为了支持Docker在Windows上运行所需要的其他配套软件和服务。
# docker-desktop-data: 保存的镜像
docker-desktop-data 则主要用于保存Docker所使用的实际数据,尤其是容器镜像、容器的可写层、容器数据卷以及其他持久化的数据。当您在Docker中拉取、构建或运行容器时,产生的镜像和容器状态都会存储在这个环境中。因此,当我们谈论镜像存储位置时,docker-desktop-data 所对应的文件系统区域就是存储这些镜像和其他重要数据的地方。对于需要迁移镜像存储位置或进行备份的情况,通常会针对docker-desktop-data 进行操作。


PS C:\Users\Lenovo> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
PS C:\Users\Lenovo> wsl -l --all -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
  
# 首先需要将docker desktop退出,确保状态是关闭状态
wsl --shutdown

# 结果
PS C:\Users\Lenovo> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Stopped         2
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2

# 备份
wsl --export docker-desktop E:\wsl2\docker\docker-desktop.tar
wsl --export docker-desktop-data E:\wsl2\docker\docker-desktop-data.tar

# 注销
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

# 导入
wsl --import docker-desktop E:\wsl2\docker\docker-desktop E:\wsl2\docker\docker-desktop.tar --version 2
wsl --import docker-desktop-data E:\wsl2\docker\docker-desktop-data E:\wsl2\docker\docker-desktop-data.tar --version 2

win系统安装docker 需要注意本机端口是否被使用,如果使用映射的时候就没法用了

# 查看所有连接的监听的端口
netstat -ano

# 排查是否有程序占用了9091端口
netstat -ano | findstr 9091

# 通过cmd命令查看哪些端口被禁用TCP协议
netsh interface ipv4 show excludedportrange protocol=tcp

问题3、启动linux分发出现“参考的对象类型不支持尝试的操作”字样

# 出现 
参考的对象类型不支持尝试的操作。 Press any key to continue...

# 解决
# 使用(管理员)执行:
netsh winsock reset

wsl命令

# 关闭(立即终止所有运行的分发及 WSL2)
wsl --shutdown

# 列出已安装的 WSL 分发版本
wsl --list
wsl -l

# 安装 WSL 和 Linux 的默认 Ubuntu 发行版
wsl --install
# 选项包括:
--distribution , -d:指定要安装的 Linux 发行版。 可以通过运行 wsl --list --online 来查找可用的发行版。
--no-launch , -n:安装 Linux 发行版,但不自动启动它。
--web-download:通过联机渠道安装,而不是使用 Microsoft Store 安装。
# 未安装 WSL 时,选项包括:
--inbox:使用 Windows 组件(而不是 Microsoft Store)安装 WSL。 (WSL 更新将通过 Windows 更新接收,而不是通过 Microsoft Store 中推送的可用更新来接收)。
--enable-wsl1:在安装 Microsoft Store 版本的 WSL 的过程中也启用“适用于 Linux 的 Windows 子系统”可选组件,从而启用 WSL 1。
--no-distribution:安装 WSL 时不安装发行版。


# 运行指定分发
wsl --distribution <Linux 发行版的名称>
wsl -d <Linux 发行版的名称>


# 列出可用的 Linux 发行版
wsl --list --online

# 列出已安装的 Linux 发行版
wsl --list --verbose

# 更改指定分发的版本(1 或 2)
wsl --set-version <Linux 发行版的名称> <版本>

# 设置默认 WSL 版本(1 或 2)
wsl --set-default-version <版本>

# 设置默认 Linux 发行版(若要设置 WSL 命令将用于运行的默认 Linux 发行版,请将 <Distribution Name> 替换为你首选的 Linux 发行版的名称。)
wsl --set-default <Linux 发行版的名称>
wsl -s <Linux 发行版的名称>


# 将目录更改为主页(~ 可与 wsl 一起使用,以在用户的主目录中启动。 若要在 WSL 命令提示符中从任何目录跳回到主目录,可使用命令 cd ~。)
wsl ~

# 通过 PowerShell 或 CMD 运行特定的 Linux 发行版
wsl --distribution <Linux 发行版的名称> --user <用户的名称:例如 root>


# 更新 WSL(更新内核版本  )
wsl --update
# 选项:
--web-download:从 GitHub 而不是 Microsoft Store 下载最新更新。

# 检查 WSL 状态
wsl --status

# 查看内核版本
wsl --version
wsl -v


# Help 命令
wsl --help

# 以特定用户的身份运行(若要以指定用户身份运行 WSL,请将 <Username> 替换为 WSL 发行版中存在的用户名。)
wsl --user <Username>


# 更改发行版的默认用户(更改用于发行版登录的默认用户。 用户必须已经存在于发行版中才能成为默认用户。)
<Linux 发行版的名称> config --default-user <Username>
# 例如:ubuntu config --default-user johndoe 会将 Ubuntu 发行版的默认用户更改为“johndoe”用户。


# 导出分发版(将指定分发版的快照导出为新的分发文件。 默认为 tar 格式。 在标准输入中,文件名可以是 -。 选项包括:)
wsl --export <Linux 发行版的名称> <FileName>
例如:wsl --export Ubuntu-20.04 D:\Ubuntu.tar
# 选项
--vhd:指定导出分发版应为 .vhdx 文件而不是 tar 文件(这仅在使用 WSL 2 的情况下受支持)


# 导入分发版
wsl --import <Linux 发行版的名称> <InstallLocation> <FileName>
例如1:wsl --import Ubuntu-20.04 D:\Ubuntu_2004 D:\Ubuntu.tar
例如2:wsl --import Ubuntu-20.04 D:\Ubuntu_2004 D:\Ubuntu.tar --version 2
# 选项:
--vhd:指定导入分发版应为 .vhdx 文件而不是 tar 文件(这仅在使用 WSL 2 的情况下受支持)
--version <1/2>:指定将分发版导入为 WSL 1 还是 WSL 2 分发版


# 注销或卸载 Linux 发行版(尽管可以通过 Microsoft Store 安装 Linux 发行版,但无法通过 Store 将其卸载。)
wsl --unregister <Linux 发行版的名称>
例如:
wsl --unregister Ubuntu-20.04


# Terminate(终止指定的发行版或阻止其运行)
wsl --terminate <Linux 发行版的名称>
wsl -t <Linux 发行版的名称>


# 就地导入发行版(将指定的 .vhdx 文件导入为新的发行版。 虚拟硬盘必须采用 ext4 文件系统类型格式。)
wsl --import-in-place <Linux 发行版的名称> <FileName>

# 用之前看一下这个官方文档
注意:https://learn.microsoft.com/zh-cn/windows/wsl/wsl2-mount-disk
# 装载磁盘或设备
wsl --mount <DiskPath>
# 选项:
--vhd:指定 <Disk> 引用虚拟硬盘。
--name:使用装入点的自定义名称装载磁盘
--bare:将磁盘附加到 WSL2,但不进行装载。
--type <Filesystem>:装载磁盘时使用的文件系统类型默认为ext4(如果未指定)。此命令也可输入为:wsl --mount -t <Filesystem>。可以使用blkid <BlockDevice> 命令检测文件系统类型,例如:blkid <dev/sdb1>--partition <Partition Number>:要装载的分区的索引号默认为整个磁盘(如果未指定)。
--options <MountOptions>:装载磁盘时,可以包括一些特定于文件系统的选项。 例如,wsl --mount -o "data-ordered" 或 wsl --mount -o "data=writeback 之类的 ext4 装载选项。 但是,目前仅支持特定于文件系统的选项。 不支持通用选项,例如 ro、rw 或 noatime。


# 卸载磁盘(卸载磁盘路径中给定的磁盘,如果未提供磁盘路径,则此命令将卸载并分离所有已装载的磁盘。)
wsl --unmount <DiskPath>

# 标识 IP 地址
wsl hostname -i # 标识通过 WSL 2 安装的 Linux 分发版 IP 地址(WSL 2 VM 地址)
cat /etc/resolv.conf # 表示从 WSL 2 看到的 WINDOWS 计算机的 IP 地址 (WSL 2 VM)
  • 16
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Docker Desktop with WSL (Windows Subsystem for Linux) allows you to run Docker containers on Windows using a Linux distribution. By integrating Docker with WSL, you can leverage the benefits of both Docker and WSL to develop and run containerized applications on your Windows machine. To get started with Docker Desktop and WSL, you need to follow these steps: 1. Install Docker Desktop: Download and install Docker Desktop for Windows from the Docker website. Make sure to enable the WSL 2 backend during installation. 2. Enable WSL: Open PowerShell as an administrator and run the following command to enable WSL: ``` wsl --install ``` This command will install WSL and Linux kernel updates on your Windows machine. 3. Choose a Linux distribution: Open the Microsoft Store, search for your preferred Linux distribution (e.g., Ubuntu, Debian), and install it. This distribution will be used by Docker to run containers. 4. Set WSL version: Open PowerShell as an administrator and run the following command to set WSL version 2 as default: ``` wsl --set-default-version 2 ``` 5. Configure Docker to use WSL: Open Docker Desktop, go to "Settings," select "General," and check the "Use the WSL 2 based engine" option. Then, select the WSL default distribution you installed in step 3. 6. Test Docker: Open a terminal (WSL) and run the following command to verify that Docker is working: ``` docker run hello-world ``` If everything is set up correctly, you should see a "Hello from Docker!" message. That's it! Now you can start running Docker containers using the Linux distribution installed through WSL. Remember that you can also access files and directories on your Windows machine from within the Linux environment to build and run your containerized applications.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值