2021最新Windows10上WSL2配置Docker+Vscode完整配置
DEBUG:
2021/8/25 ----- wsl2 这文章推崇的,但经过这两天的性能测试。 资源占用高已经无法控制已经实锤了,
现在已经找到了替代方案、Hyper-V,具体教程会在后面时间发布。 文章链接也会放在此开头下方。
不太建议使用wsl2 ------- 下面教程可以做参考,毕竟证明存在过,此文章只做参考不建议部署。此段需详细阅读后才往下看!!!!!!!
BUG解决办法! 2021/8/26:
在你的%USERPROFILE% 即C:Users用户名, 创建一个 .wslconfig 的文件 注意前面有个点, 添加内容如下:
memory=内存大小 swap=交换空间 processors=CPU内核数量
增加选择 2021/8/29
由于考虑到时间以及部分电脑的磁盘无法更新windows版本,这里增加配置Hyper-V的配置教程。
[ws12] memory=2GB swap=0 processors=1 localhostForwarding=true swapFile=%USERPROFILE%AppDataLocalTempswap.vhdx [ws1] memory=512MB swap=512MB processors=1 localhostForwarding=true swapFile=%USERPROFILE%AppDataLocalTempswap.vhdx
前言:
WIN+R -> 运行 -> winver
第二检查系统的配置和服务
WIN+R -> services.msc -> 找到windows update 确保它能运行 -> 全部配置完可以关闭
-----------------开启功能服务两种方法第一种 以管理运行powershell运行下面命令
# 这是开启虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 开启linux windows 子系统功能 也就是 wsl
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 开启Hyper-V
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
-----------------图形打开这些功能打开win -> 进入设置 -> 应用 -> 右上角程序和功能 -> 左边启用或关闭 Windows 功能
现在重启电脑, 如果没报错就接下去操作。 如果报错可能是虚拟功能BIOS里没开,
你就要F2或Delete进BIOS中打开Virtual开头的功能改成Enabled即可。 不懂百度
在运行里输入 -> powershell或cmd -> systeminfo # 系统类型 如 x64-based PC 就是x64架构内核则选择下面第一个 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi # X64/x32架构内核 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi # Arm64架构内核
wsl --set-default-version 2 # wsl -> wsl2 wsl -l -v # 查看是否wsl2版本
安装Docker -----------如果你按了前面步骤部署好了,Docker就不会报错。
https://www.docker.com/products/docker-desktop
安装会提示你登录微软账号选择跳过/不登录即可,就会自己安装。按右键或win里启动
在商城里安装ubuntu即可默认是20.04最新版本
wsl -l -v # NAME STATE VERSION #* docker-desktop Running 2 # Ubuntu Running 2 # docker-desktop-data Running 2 # 这时候我们默认* 是docker-desktop。如果我们输入wsl 就会进入docker-desktop, 但我们想进入Ubuntu呢? # 运行分支 wsl -d Ubuntu # 修改默认分支 wsl --shutdown # 先停止所有分支的运行 wsl -s Ubuntu # 设置默认分支 wsl -l -v # NAME STATE VERSION # * Ubuntu Running 2 # docker-desktop-data Stopped 2 # docker-desktop Running 2
这时候我们依旧无法在Ubuntu里面连接Docker -> 打开Docker配置 -> 设置
四、转移所有Docker存储数据路径
wsl --shutdown # 关闭所有分支 wsl --export docker-desktop-data F:wsldocker-desktop-datadocker-desktop-data.tar # 导出Docker Data镜像包 wsl --export Ubuntu F:wslubuntuUbuntu.tar # 导出Ubuntu镜像包 wsl --unregister docker-desktop-data # 注销docker镜像 wsl --unregister Ubuntu # 注销Ubuntu镜像 wsl --import docker-desktop-data F:wsldocker-desktop-data F:wsldocker-desktop-datadocker-desktop-data.tar --version 2 # 重新导入Docker data 打包好的镜像 wsl --import Ubuntu F:wslubuntu F:wslubuntuUbuntu.tar --version 2 # 重新导入Ubuntu打包好的镜像
五、 docker安装ubuntu镜像与挂起容器
# 首先通过docker安装ubuntu镜像,这里的镜像是一个挂docker里的镜像。跟刚刚子系统是不一样的。
# 我们先搜索docker能够下载的镜像, 打开powershell 或者 terminal。
docker search ubuntu
# 把基础配置ubuntu容器拉下来、等等就配置python的容器。 因为Q群里的小伙伴多数熟悉python docker pull ubuntu # 拉完我们查看一下 docker iamges # REPOSITORY TAG IMAGE ID CREATED SIZE # ubuntu 20.04 1318b700e415 3 weeks ago 72.8MB # 不得不说大小只有72.8MB docker的强大慢慢体现
下面我们就可以配置一个Python的环境
# 我们刚刚拉的镜像名称为 ubuntu, 所以我们挂容器也以这个为准,:后面是ubuntu版本. # 端口则 9952:9952 这里:是说明分割windows端口与docker里的容器端口 windows开放9952端口:容器开放9952端口 # 关于端口的连接工作、首先docker开启时就会创建一个封闭的虚拟机网络,防止逃逸。也就是说所有通信控制权在于docker # 通过端口映射就可以实现实时通信, 如果想深入自行查阅官方。 docker run -p 9952:9952 -it ubuntu:20.04 # 查询刚刚挂起的容器 PS C:UsersAdministratorDesktop> docker ps -a # CONTAINER #ID IMAGE COMMAND CREATED STATUS PORTS #NAMES #277b45f672a1 ubuntu:20.04 "bash" 55 seconds ago Exited (127) 5 seconds #ago jovial_meninsky #2034ee5675a5 ubuntu:20.04 "bash" 22 hours ago Exited (255) 14 minutes ago 0.0.0.0:9950->9950/tcp, :::9950-#>9950/tcp rust_ubuntu # 55 seconds ago 挂载了一个名为jovial_meninsky的容器,命名是不会给你起的。277b45f672a1 为唯一ID,开启和停止修改都要这个为主 # 先修改名称 docker rename jovial_meninsky ubuntu_python3 docker ps -a
# 如ID为 277b45f672a1
# 开启容器
docker start 277b45f672a1
# 停止容器
docker stop 277b45f672a1
# 进入容器
docker attach 277b45f672a1
六、配置vscode以及python3环境
搜索docker -> install
搜索Remote Containers -> install
如果有提示则选择 Got it
现在快捷键Ctrl+J -> 默认就进入到容器里了
# 修改国内加速镜像 cd /etc/apt cp -rf sources.list sources.list.bak
把下面内容粘贴上去
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
更新以及配置python3、
mkdir ~/python3 cd ~/python3 apt update apt install python3.8 python3-pip python3-venv -y #如果你想配置其他版本python自行修改即可 python3.8 -m pip install numpy # 安装测试所需的库
接着修改settings -> Ctrl+, 输入settings
在settings.json加入 "telemetry.enableTelemetry": false
重启vscode重新打开,接下来配置run和debug
{ "version": "0.2.0", "configurations": [ { "name": "Python", "type": "python", "request": "launch", "stopOnEntry": true, "pythonPath": "/usr/bin/python3.8", "program": "${file}", "cwd": "${workspaceRoot}", "env": {}, "envFile": "${workspaceRoot}/.env", "debugOptions": [ "WaitOnAbnormalExit", "WaitOnNormalExit", "RedirectOutput" ] } ] }