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%\AppData\Local\Temp\swap.vhdx [ws1] memory=512MB swap=512MB processors=1 localhostForwarding=true swapFile=%USERPROFILE%\AppData\Local\Temp\swap.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:\wsl\docker-desktop-data\docker-desktop-data.tar # 導出Docker Data鏡像包 wsl --export Ubuntu F:\wsl\ubuntu\Ubuntu.tar # 導出Ubuntu鏡像包 wsl --unregister docker-desktop-data # 注銷docker鏡像 wsl --unregister Ubuntu # 注銷Ubuntu鏡像 wsl --import docker-desktop-data F:\wsl\docker-desktop-data\ F:\wsl\docker-desktop-data\docker-desktop-data.tar --version 2 # 重新導入Docker data 打包好的鏡像 wsl --import Ubuntu F:\wsl\ubuntu\ F:\wsl\ubuntu\Ubuntu.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:\Users\Administrator\Desktop> 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" ] } ] }

