当前位置:   article > 正文

window下使用linux子系统及基于wsl2安装docker_docker安装windowswsl2

docker安装windowswsl2

https://blog.csdn.net/qq_42362605/article/details/124898062 这个教程好

介绍

wsl

WSL的全称是Windows Subsystem for Linux(适用于Linux的Windows子系统)。

平时开发大部人都是在提供了高效GUI的window下工作,但是真正部署环境普遍都是在Linux中,所以为了让开发环境和部署环境统一,我们需要在windows模拟LInux环境,以前我们可能通过虚拟机的方式实现,不过自从微软拥抱开源更加开发提供了Linux的Windows子系统(WSL)后,我们又多了一个选择,通过WSL运行linux程序(WSL比通过虚拟机来运行linux性能更强,耗费资源更小,安装linux环境最大只需要200多M)!

wsl以及 1代和2代的区别

简介

wsl:Windows Subsystem for Linux 即linux子系统
wsl 1 :第一代的wsl,用的是Windows内核模拟的各种系统接口。 下文中,WSL默认指的是 WSL1
wsl2 :微软改用虚拟机运行linux内核的版本。是一个运行在windows下的linux内核(非发行版),现在一般都用wsl2了

微软官方的介绍 https://learn.microsoft.com/zh-cn/windows/wsl/compare-versions

WSL 1用的是Windows内核模拟的各种系统接口。虽然可以运行大部分Linux应用,但还是有不少依赖于内核的应用是无法正常运行的——例如Docker。另外WSL 1和Windows共用文件系统、网络,有些时候会比较头疼。

而 WSL2 则与此完全不同,WSL2 是第二代 WSL,包含在2020年5月正式发布 Windows 10 v2004 版中。win10 开始内置了一个轻量级虚拟机,经过不断的优化,这个虚拟机实现了与 windows 的高度集成,实现了虚拟机的高性能运行,WSL2 便是运行在虚拟机上的一个完整的 linux 内核。

传统的 VM 体验可能启动速度慢,是独立的,消耗大量资源,需要你花费时间进行管理。 WSL 2 没有这些属性。
启用WSL2的 Linux 系统启动时间非常快,内存占用很少,并且,WSL 2 还可以直接原生运行 Docker,VS Code 编辑器还有 Remote-WSL 插件,相对于完整的 linux 虚拟机只是不支持 systemctl、systemd,不能直接运行图形桌面

可见,WSL2 与 WSL 1 的设计理念有着天翻地覆的变化,WSL 的实现方式显然更为极客,但面临一系列的生态环境和性能的问题,这条路要想走通,简直比登天还难,如今,微软放弃这条路,转而走上虚拟机优化运行原生 linux 内核这条路确实是一条一劳永逸的正路。

具体区别

WSL 2 拥有完整的 Linux 内核
WSL 2 中的 Linux 内核是 Microsoft 根据最新的稳定版分支(基于 kernel.org 上提供的源代码)构建的。此内核已专门针对 WSL 2 进行了调整,针对大小和性能进行了优化,以便在 Windows 上提供良好的 Linux 体验。 内核将由 Windows 更新提供服务,这意味着你将获得最新的安全修补程序和内核改进功能,而无需自行管理它。

在这里插入图片描述

另外,在Windows 11中WSL 2能过访问GPU,这意味着可以使用一些Linux GUI程序,同时使得使用机器学习、人工智能和数据科学等应用场景更加方便快捷。

WSL 2 有 WSL 1 的优点,包括 Windows 和 Linux 之间的无缝集成,启动时间短,资源占用量少,并且无需 VM 配置或管理。 虽然 WSL 2 确实使用 VM,但 VM 是在幕后管理和运行的,因此你将具有与 WSL 1 相同的用户体验。

docker架构介绍与wsl下的注意问题

架构介绍看另一个博客

经过几次调整WSL(用于Linux的Windows子系统,也被称为Bash for Windows)可以用于Docker for Windows。
不过令人遗憾的是目前WSL是不支持Docker的守护进程,但您可以使用Docker CLI连接到通过Docker for Windows或您创建的任何其他VM 运行的远程Docker守护进程

然而,客户端不必与守护进程安装在同一个地方。例如,您可以在开发计算机上使用本地Docker客户端与Azure中的Docker进行通信。这使我们可以让WSL中的客户端与主机上运行的守护进程通信。

零、环境准备

  • CPU支持虚拟化(任务管理器-性能-cpu-虚拟化处查看,没有自行百度主板怎么开启)
  • 系统版本要求
    Windows 11 64-bit: Home or Pro version 21H2 or higher, or Enterprise or Education version 21H2 or higher.
    Windows 10 64-bit: Home or Pro 21H1 (build 19043) or higher, or Enterprise or Education 20H2 (build 19042) or higher.
  • 使用下面的命令启用WSL2,而不要功能管理直接开启。 后面会详细介绍【新版的docker安装的时候可以选择 使用wsl2还是hvperv作为虚拟机,使用wsl2就不用hyperv了】
  • windows功能管理开启虚拟化平台

注意最好按照下面的顺序安装 避免不必要的问题

一、如何启用wsl2 与安装linux发行版

新版安装方式(全自动)

新版文档:https://learn.microsoft.com/zh-cn/windows/wsl/install

ps 默认情况下,安装的 Linux 分发版为 Ubuntu

#管理员模式命令行输入
wsl --install #此命令将启用运行 WSL2 并安装 Linux 默认的 Ubuntu 发行版所需的功能。
重启
  • 1
  • 2
  • 3

wsl --set-default-version 2 这个方法只能改变默认的 如果是已经启用了的系统 则这个命令不生效
在Power Shell中输入 wsl -l -v 可以查看WSL的版本

旧版安装方式(手动)

旧版文档:https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
简要步骤说明如下

  1. 启用适用于 Linux 的 Windows 子系统
    以管理员身份打开powershell并运行 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    实际上似乎相当于windows可选功能里选中适用于windows的linux子系统

建议现在转到步骤 #2,更新到 WSL 2,但如果只想安装 WSL 1,现在可以重新启动计算机,然后继续执行步骤 6 - 安装所选的
Linux 发行版。 若要更新到 WSL 2,请等待重新启动计算机,然后继续执行下一步。

  1. 更新windows系统至1903或更高版本
  2. win可选功能启用“虚拟机平台“(VirtualMachinePlatform)。 计算机需要虚拟化功能才能使用此功能。注意,可能有的找不到,需要命令行开启:
    以管理员身份打开 PowerShell 并运行:
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    重新启动计算机,以完成 WSL 安装并更新到 WSL 2。

VirtualMachinePlatform和hyper v不一样的

  1. 下载Linux内核更新包并安装:x64计算机的WSL2 Linux内核更新包(从文档看最新的)
    ​wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  2. 将WSL2设置为默认版本
    wsl --set-default-version 2
  3. 安装Linux分发版
    打开Microsoft Store,搜索wsl或者直接具体的发行版本比如,选择你喜欢的Linux分发版并下载

注意事项

在Power Shell中输入 wsl -l -v 可以查看WSL的版本

优先使用新版文档,若不行再旧版

win下的centos好像有问题
特别微软商店里那个 root权限似乎都没有

推荐商店下载Windows Terminal 可以开启多窗口cmd 而且更好看

更多使用技巧

一个非常使用的技巧是,通过管道将指令的输出结果传入Windows的剪贴板。按下 Win+V 可以开启超级剪贴板。(首次按下 Win+V 需要点击打开,开启超级剪贴板)。
在这里插入图片描述
在这里插入图片描述
wsl等更多使用技巧(免密登录ssh、WSL中的服务开机自启动等等)可以看 https://zhuanlan.zhihu.com/p/394776349

二、安装docker

子系统内使用命令记得wsl内先sudo 到root!
使用docker for windows 子系统内无需再安装docker,且子系统自己安装docker的方式我试了没成功

子系统内确定删除了docker

下载docker for windows(一定用管理员安装和打开)

新版4.92也许可能出问题 下载旧版4.8。4.12也有问题emmm

安装的时候记得默认勾选wsl替换hyperv那个选项 或者软件内设置
在这里插入图片描述

配置连接-wsl连接外部deamon

如果Docker destop能看到你的子系统

  • 右键小鲸鱼 > settings > resource-wsl intergation下有你的子系统,那么勾选打开(不知道为啥有的没有?)
    -

如果如果Docker destop看不到你的子系统

  • 右键小鲸鱼 > settings > General ,开启expose daemon
  • ubuntu ,将WSL配置为连接到Docker for Windows执行命令:export DOCKER_HOST=tcp://127.0.0.1:2375
  • service docker start 开启docker (可能报错 /usr/bin/dockerd not present or not executable 但是好像也不影响)

在这里插入图片描述

  • 持久化运行
echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
source ~/.bashrc
  • 1
  • 2

然后就可以愉快使用了

# 检查dockerd进程启动
service docker status
ps aux|grep docker

# 查看 Docker 版本
docker version

# 检查拉取镜像等正常
docker pull mysql
docker images
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

WSL2 Docker最爽的地方是和宿主机Win10共享network,我们在宿主机Win10使用localhost加端口号就可以访问Docker中对应container中的服务,十分方便

如果有vpn代理 那么可能出现问题 https://zhuanlan.zhihu.com/p/151392411这里解决

低版本的windows用docker toolbox 功能上没有docker desktop全 而且好像不需要开hv 那些乱七八糟的?

更换镜像源

似乎不能编辑/etc/docker/daemon.json下的jsion文件的方式添加
得去docker desktop的setting下,在配置文件中加入

加入以下配置项

{
"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com"]
}
  • 1
  • 2
  • 3

使用windows 容器

请看另一篇博客关于windows容器的介绍

子系统需要更换软件源-乌班图为例

开始更换国内镜像源(注意:如果你选择的不是 Ubuntu18.04,这一步不太一样)

WSL 默认源的服务器地址在国外,速度很慢,强烈建议使用国内源,而不同 Linux 发行版镜像源文件地址不一样,比如 Ubuntu 是在 /etc/apt/sources.list,Centos 是在/etc/yum.repos.d/CentOS-Base.repo ,同一 Linux 发行版的不同版本使用的源文件仓库地址也是不一样,这点需要注意。

如果是新手小白朋友,WSL 换源操作可以参考这篇文章:教你如何将WSL系统更换国内源?+固定路径+国内镜像源+详细教程
进入终端,输入以下命令

切换到源路径
cd /etc/apt

备份 Ubuntu 原始源
cp sources.list sources.list.bak

开始换源
sudo vim sources.list
1
2
3
4
5
6
7
8
Ubuntu18.04 阿里镜像源

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
1
2
3
4
5
6
7
8
9
10
Ubuntu18.04 中科大镜像源

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
1
2
3
4
5
6
7
8
9
10
Ubuntu18.04 清华镜像源

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
1
2
3
4
5
6
7
8
9
10
换源之后,进行更新

更新源
sudo apt update
更新软件包
sudo apt upgrade
————————————————
版权声明:本文为CSDN博主「陈所长研究室」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42362605/article/details/124898062

可能遇到的问题

wsl中卸载docker

卸载,报错,原因就是 docker 这个服务已经停了,如果一个服务从来没有被运行过,则他无法被卸载,太狗了

$ sudo apt remove docker-ce
  • 1
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  containerd runc
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  docker-ce
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 62.7 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 30768 files and directories currently installed.)
Removing docker-ce (1.13.1-0ubuntu1~16.04.2) ...
invoke-rc.d: could not determine current runlevel
 * Stopping Docker: docker
No process in pidfile '/var/run/docker-ssd.pid' found running; none killed.
invoke-rc.d: initscript docker, action "stop" failed.
dpkg: error processing package docker-ce (--remove):
 subprocess installed pre-removal script returned error exit status 1
dpkg: error while cleaning up:
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 docker-ce
E: Sub-process /usr/bin/dpkg returned an error code (1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

报错信息就是上面这样,网上搜了一下,有人给出了相似的经历,但是解决方案都不行,最终在 GitHub issue 上找到了一个较相似的解决方案,自己改了一下,就可以了

$ cd /var/lib/dpkg/info
$ sudo vim docker-ce.prerm
  • 1
  • 2

然后可以看到里面是这样的东西(我的已经被删除了,网上找的)

if ([ -x "/etc/init.d/docker" ] || [ -e "/etc/init/docker.conf" ]) && \
   [ "$1" = remove ]; then
        invoke-rc.d docker stop || exit $?
fi
  • 1
  • 2
  • 3
  • 4

直接将这一整个 if 语句(四行)给注释了(解决方案给出的是将 invoke 那一行注释,但是发现 if 语句会报错,所以把这四行都注释了) ,再重新 apt remove docker-ce 就能够将 docker 给卸载了

不能打开 deamon报错可能的解决方案

客户端打开提示:
Docker failed to initialize. Docker Desktop is shutting down

win自己的 cmd 显示:

error during connect: In the default daemon configuration on Windows, 
the docker client must be run with elevated privileges to connect.: 
Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json: 
open //./pipe/docker_engine: The system cannot find the file specified.
  • 1
  • 2
  • 3
  • 4

wsl或者发行版内 docker命令显示:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  • 1
System has not been booted with systemd as init system (PID 1). Can't operat
  • 1

论坛比较全的错误总结:
https://forums.docker.com/t/solved-docker-failed-to-start-docker-desktop-for-windows/106976/39

可能的解决方案

退出杀毒软件

安装和打开用管理员如果不是,可能第一次打开不显示,第二次打开会报错。此时需要重启再管理员打开 或者卸载重安装

删除roaming下的docker文件夹

可能要关闭除了虚拟机平台和wsl其他的虚拟功能(不知道是不是这个)

!!!安装旧版的docker 4.90 新版4.92也许可能出问题

wsl内彻底卸载docker(可能要用到下面问题提到的方法)

# win的cmd下管理员
cd "C:\Program Files\Docker\Docker"
DockerCli.exe -SwitchDaemon
  • 1
  • 2
  • 3

如果能打开destop客户端 但是wsl内不行

在这里插入图片描述

docker desktop for windows能打开 还是报错

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

为了方便开发需要在子系统下安装Docker来部署推送一些镜像资源,可惜的是目前的wsl是不支持Docker的守护进程的,但是可以通过安装Docker利用Docker CLI链接到远程的Docker守护进程来实现

确保安装docker配置连接那里做了

systemd的问题 需要用service替换systemctl

System has not been booted with systemd as init system (PID 1). Can‘t operate.
  • 1

System has not been booted with systemd as init system (PID 1). Can‘t operate.问题解决方法
ichen820 于2021-07-10 14:28:16
在这里插入图片描述
用window10下WSL使用Ubuntu来用Docker
当我使用命令sudo systemctl start docker的时候报错:
System has not been booted with systemd as init system (PID 1). Can’t operate.

查了原因:
如果是一般的Linux操作系统,可能是因为Linux中没有使用systemd,想用systemd命令来管理Linux上的服务,因此会报错,很可能是使用的是经典的SysV init(sysvinit)系统。
但我这个是window10下WSL的Ubuntu,就会使SysV init而不是systemd。
解决方法:
更换命令,用SysV init的命令代替systemd的

在这里插入图片描述

原生 Linux 安装 Docker 方式,Docker 无法实现开机自启和每次 WSL 启动Ip会发生变换

每次重启电脑后给 wsl2 分配的 IP 一般都会变动,我们要连接子系统内部的应用频繁换 IP 会很麻烦,参照别人的解决方法,可以给 Ubuntu 子系统中添加一个新的网卡来给宿主机连接用。

1 查看安装的是哪个子系统发行版本
C:\Users\cdavid>wsl -l
适用于 Linux 的 Windows 子系统分发版:
Ubuntu-18.04 (默认)

2 在子系统中创建 init.wsl
sudo vim /etc/init.wsl

输入以下内容
#network static ip
ip addr add 192.168.50.28/24 broadcast 192.168.50.255 dev eth0 label eth0:1
#docker start
service docker start

给文件进行授权
sudo chmod +x /etc/init.wsl

3 在 Windows 创建 bat 脚本,输入以下内容,放在 C 盘目录下(哪里都想,不要随手删了就行)。
初始化脚本,注意这是 Ubuntu-18.04 和你的发行版本对应
wsl -d Ubuntu-18.04 -u root /etc/init.wsl
添加一个网卡
netsh interface ip add address “vEthernet (WSL)” 192.168.50.93 255.255.255.0

在Windows下 输入快捷键 WIN+R 打开运行窗口,输入 shell:startup,该目录下新建 ubuntu.vbs。
set ws=WScript.CreateObject(“WScript.Shell”)
ws.Run “C:\wsl2-start.bat”,0

进入子系统,输入ifconfig, 以后 192.168.50.28 就是 WSL 的固定 IP 地址了
在这里插入图片描述
https://blog.csdn.net/qq_42362605/article/details/124898062

怎么看docker日志

你会发现这个Docker怎么都启动不了,那现在怎么办?一定要先看日志(/var/log/docker.log )

docker dead but subsys locked

service docker status输出:

docker dead but subsys locked

各种找资料
尝试:

rm -rf /var/run/docker.*

rm -rf /var/lock/subsys/docker

(备注:如果有需要备份的docker此处千万不要用rm -rf /var/lib/docker,否则会删除所有容器数据)

尝试:

service docker stop

thin_check /var/lib/docker/devicemapper/devicemapper/metadata

thin_check --clear-needs-check-flag /var/lib/docker/devicemapper/devicemapper/metadata

service docker start

最后的办法
docker -d可以启动

那就采用

nohup docker -d &

先临时用着,后续有空更深入研究。
————————————————
版权声明:本文为CSDN博主「普通网友」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Ajekseg/article/details/124173562

如何以非root用户身份管理Docker

官方文档有写

以非root用户身份管理Docker
Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字归用户所有root,其他用户只能使用sudo。Docker 守护程序始终以root用户身份运行。

如果您不想在docker命令前加上sudo,请创建一个名为 docker 的Unix组并将用户添加到其中。当 Docker 守护进程启动时,它会创建一个可供docker组成员访问的 Unix 套接字。

该docker组授予与root 用户等效的权限。有关这如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。

创建 docker 组
sudo groupadd docker
1
将用户添加到 docker 组中
sudo usermod -aG docker $USER
1
注销并重新登录
验证是否可以不使用 sudo 运行docker
docker run hello-world
1
若报下方的错误

WARNING: Error loading config file: /home/user/.docker/config.json
stat /home/user/.docker/config.json: permission denied

则修改权限

sudo chown “ U S E R " : " USER":" USER":"USER” /home/“ U S E R " / . d o c k e r − R s u d o c h m o d g + r w x " USER"/.docker -R sudo chmod g+rwx " USER"/.dockerRsudochmodg+rwx"HOME/.docker” -R
————————————————
版权声明:本文为CSDN博主「MAVER1CK」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35395195/article/details/125381254

docker报错 An attempt was made to access a socket in a way forbidden by its access permissions.

Error: listen tcp 0.0.0.0:****: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

Error: listen tcp 127.0.0.1:****: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

提示:端口拒绝访问(本文示例端口是8001)
查看对应的端口号 8001 是否被占用,netstat -aon|findstr 8001
如果被占用,运行命令taskkill /pid 8001 -t -f结束进程,则问题解决
如果未被占用,则需要查看端口号是否在 Hyper-V 保留tcp端口范围内,开始到结束范围内的端口不可用, netsh interface ipv4 show excludedportrange protocol=tcp,结果可以看到 8001 确实在在排除范围内

解决方法如下 :

最简单的办法就是修改程序或命令使用的端口
如果不修改使用端口,就需要修改保留端口,修改方法如下:

最简单的办法-重启电脑:保留的端口是随机的,每次重启电脑都会改变,因此可以通过重启电脑来解决。
重新设置一下【TCP 动态端口范围】,让 Hyper-V 只在设定的范围内保留端口即可:(管理员权限)

netsh int ipv4 set dynamic tcp start=49152 num=16384

netsh int ipv6 set dynamic tcp start=49152 num=16384

先执行以上两个命令,然后重启电脑。

重启后运行命令 netsh int ipv4 show dynamicport tcp 查看TCP动态端口范围

或者运行命令 netsh interface ipv4 show excludedportrange protocol=tcp查看TCP排除范围

参考资料

https://blog.csdn.net/qq_42362605/article/details/124898062

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/53573
推荐阅读
相关标签
  

闽ICP备14008679号