最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

【Windows11+WSL2+Docker(非桌面版)配置教程与常见报错解决(2025)】

运维笔记admin2浏览0评论

文章目录

  • 前言
  • 1. 安装Hyper-V(非专业版Windows11)
  • 2. 系统设置
  • 3. WSL设置
  • 4. 下载并安装发行版Ubuntu22.04
  • 5. 更新软件源和软件包
  • 6. docker配置
  • 7. docker拉取镜像报错,解决办法
  • 8. service与systemctl 命令报错问题
  • 总结
  • 参考


前言

跨平台开发和高效部署已成为开发者们追求的目标。Windows 11通过 WSL2(Windows Subsystem for Linux 2)和Docker的集成,可以为开发者提供强大的工具链,使得在Windows环境下进行Linux开发和容器化部署变得更加便捷。本文将详细介绍如何在Windows 11上配置WSL2和Docker,帮助你快速搭建一个高效、便捷的开发环境。


1. 安装Hyper-V(非专业版Windows11)

由于非专业版 Windows11 没有Hyper-V选项,需要安装Hyper-V。桌面新建文本文档1.txt,输入下面内容

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

修改文件后缀为.bat,管理员身份运行该文件,完成后关闭并重启电脑即可。

2. 系统设置

打开控制面板 -> 程序 -> 启用或关闭Windows功能,开启如下选项。

3. WSL设置

打开cmd命令行窗口,执行如下命令,更新WSL版本到最新

wsl --update

若更新进度缓慢,可以在这里 手动下载最新版进行安装,下载完成后双击打开即可安装。

以管理员身份运行windows power shell,输入以下命令选择WSL版本为WSL2

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

4. 下载并安装发行版Ubuntu22.04

下载安装前先检查系统中是否安装了其他系统。

wsl -l -v


进入该链接进行下载:https://learn.microsoft/zh-cn/windows/wsl/install-manual
下载完成后直接双击打开进行安装。

等待弹出界面:

设置用户名和密码(别太复杂,以后会频繁使用)即可安装完成。

5. 更新软件源和软件包

在开始菜单中打开Ubuntu即可运行Ubuntu

先备份原来的软件源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak


编辑软件源:

# 编辑软件源
sudo nano /etc/apt/sources.list

将原来的内容替换为下面的内容(可自行搜索nano编辑文本的快捷键以及如何保存并退出):

deb http://mirrors.aliyun/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal-backports main restricted universe multiverse

设置完成后保存并退出。
继续在Ubuntu命令行中执行如下命令:

# 更新软件源
sudo apt-get update -y
# 升级所有软件
sudo apt-get upgrade -y

即可完成软件更新。

6. docker配置

# 在 ubuntu 执行
sudo apt-get update # 更新内核
sudo apt-get install ca-certificates curl gnupg #安装依赖

导入 Docker 官方 GPG 密钥

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

添加Docker官方仓库

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装docker

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

测试是否安装成功

docker -v

#运行docker
sudo service docker start		
# 然后拉取测试环境
docker pull hello-world

不出现报错即成功。

7. docker拉取镜像报错,解决办法

拉取镜像时出现如下错误:
permission denied while trying to connect to the Dockerdaemonsocket at unix:///var/run/docker.sock:Post"http://%2Fvar%2Frun%2Fdocker,sock/v1.48/images/create?fromImage=hello-world&tag=latest": dial unix /var/run/docker.sock: connect: permission denied

从上面的报错信息上看出,当试图通过socket去连接docker时权限不被允许。这是因为socket需要root用户才能访问,当前用户的权限不够,所以被禁止了。
添加docker的用户组,把当前用户加入组中。

#添加用户组
sudo groupadd docker     
#将当前用户<username是你的用户名>添加至用户组         
sudo gpasswd -a username docker    
#更新用户组
newgrp docker                    

错误解决,此时作者电脑出现新的错误:
Using default tag: latestMe0u卡Ceededwhi1e61Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connect

Docker 无法连接到 Docker Hub(registry-1.docker.io),可能是由于网络不稳定、代理设置问题等
我们首先 cd 进入/etc/docker/文件夹,创建 daemon.json

sudo touch daemon.json

然后使用nano打开该json文件

sudo nano daemon.json  

写入以下内容

{
    "registry-mirrors" : [
      "https://docker.registry.cyou",
      "https://docker-cf.registry.cyou",
      "https://dockercf.jsdelivr.fyi",
      "https://docker.jsdelivr.fyi",
      "https://dockertest.jsdelivr.fyi",
      "https://mirror.aliyuncs",
      "https://dockerproxy",
      "https://mirror.baidubce",
      "https://docker.m.daocloud.io",
      "https://docker.nju.edu",
      "https://docker.mirrors.sjtug.sjtu.edu",
      "https://docker.mirrors.ustc.edu",
      "https://mirror.iscas.ac",
      "https://docker.rainbond"
  ]
}

按ctrl +x 退出,选择 y 进行保存,再按回车键返回命令行界面。

重新回到Ubuntu中,重启服务

sudo service docker restart


重新拉取:

docker pull hello-world


成功!

8. service与systemctl 命令报错问题

当运行以下命令时会报错,如果改成 sudo service docker start 则不会报错,这是因为在WSL的ubuntu中默认支持老版本的service命令,但是systemctl命令更强大,因此可以激活该命令。

输入以下命令,发现使用的是SysV init(sysvinit)初始化系统

 ps -p 1


解决方式:首先在etc目录下新建文件wsl.conf

sudo nano wsl.conf

然后写入以下内容:

[boot]
systemd=true

保存后,运行 :wsl --shutdown 关闭wsl服务,再重新启动Ubuntu。

成功解决!


总结

本文配置了Windows11(非专业版)下的WSL2和Docker开发环境,并针对配置环境中可能出现的常见错误提供了解决方案。如果有其他问题,欢迎评论区留言讨论。

参考

windows11 安装WSL2全流程
windows11 搭建 WSL2 运行环境(2024)
Windows安装 WSL2、Ubuntu 、docker(详细步骤 , 弃用 docker desktop )
WSL(Windows Subsystem for Linux)安装、迁移D盘、设置默认登录账户、更改root密码和授予普通用户sudo权限
Windows11 WSL中Llinux报错:System has not been booted with systemd as init system (PID 1). Can‘t operate

发布评论

评论列表(0)

  1. 暂无评论