--- tags: IO.NET --- # 配置 IO.NET Windows Worker 教程 :::info - 標題:配置 IO.NET Windows Worker 教程 - 作者:[CWANG](https://github.com/t106362512) ::: --- :::spoiler 目錄 [TOC] ::: --- ## 安裝教程 ### 一步步設置 WSL 與 Docker 以及 NVDIA CUDA 1. 以管理員身分開啟終端機後,輸入以下指令以啟開虛擬化,這樣不用進 BIOS 調整 ![image](https://hackmd.io/_uploads/ryWCu9NAa.png) ```bat bcdedit /set hypervisorlaunchtype auto # 編輯開機設定,以開啟虛擬化功能 ``` 2. 然後再終端機後輸入以下指令,即可自動化安裝 CUDA,接著重啟系統(因配置虛擬化與CUDA,故要重啟) ```bat Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe # 加載 Windows 套件管理工具 - winget winget install Nvidia.CUDA -h --accept-package-agreements --accept-source-agreements --custom "-s nvcc_12.4" # 使用 winget 簡化安裝過程。這裡用無聲的方式安裝 cuda 中的 nvcc 就好 ``` 2. 再用管理員身分開啟終端機並輸入以下 ```bat wsl --install --no-distribution # 該指令會幫你開啟 wsl 功能 wsl --set-default-version 2 # 如果系統版本較舊,會需要額外使用這個指令以設定預設版本 ``` 3. 開啟終端機後輸入以下指令,即可下載 Docker 並自動化安裝。 ```powershell winget install Docker.DockerDesktop -h --accept-package-agreements --accept-source-agreements --custom "install --accept-license --always-run-service" ### 可以依據情況,在 --custom 後面再設置以下參數 # --wsl-default-data-root=D:\\Docker\\wsl\\data # 如果你C盤不夠,可以在安裝時就指定容器與鏡像的安裝位置 # --backend=hyper-v # 如果是 WinServer 且有設置 hyper-v,可選 hyper-v。而目前 io.net 並未製作 Windows 版本的容器,故不可使用 windows 作為 backend & $($env:ProgramFiles | Join-Path -ChildPath 'Docker\Docker\Docker Desktop.exe') # 初始化 Docker-Desktop ``` ## 其他維運指令 ### 限制 Docker 與 WSL 的系統資源使用量 - 以管理員身分開啟終端機(Powershell)後,輸入以下指令即可 ```powershell Add-Content "$env:USERPROFILE/.wslconfig" @" [wsl2] memory=4GB # 限制 wsl2 只能使用 4G 內存 processors=2 # 限制 wsl2 只能使用兩個單位的 cpu swap=6GB # 限制 wsl2 的虛擬內存為 6G,設置為內存的 1.5 到 2 倍就好。會佔用硬碟使用空間 "@ Restart-Service LxssManager # 重啟服務 ``` - 如果之後要改的話,以管理員身分開啟終端機(Powershell)並使用以下指令後,開啟文本編輯器編輯後再重啟 wsl 服務即可 ```powershell notepad "$env:USERPROFILE/.wslconfig" # 編輯 wsl 設定 Restart-Service LxssManager # 編輯並儲存以後,再重啟服務 ``` ### 更改 Docker 容器與 WSL 位置的方法 1. 假設要將位置改為 D:\Docker\wsl\data\ 的話,開啟終端機輸入以下指令 ```bat wsl --shutdown mkdir D:\Docker\wsl\data\ wsl --export docker-desktop-data "D:\Docker\wsl\data\docker-desktop-data.tar" wsl --unregister docker-desktop-data wsl --import docker-desktop-data "D:\Docker\wsl\data" "D:\Docker\wsl\data\docker-desktop-data.tar" --version 2 ``` 2. 重啟 docker ```bat docker-machine restart ``` ### 操作 IO NET 容器 (避免操作到其他容器) - 暫停 IO.NET 容器。開啟終端機(Powershell)後,輸入以下指令即可 ```powershell docker ps -aqf volume=/var/run/docker.sock | ForEach-Object { docker pause $ } ``` - 回復 IO.NET 容器。開啟終端機(Powershell)後,輸入以下指令即可 ```powershell docker ps -aqf volume=/var/run/docker.sock -f status=paused | ForEach-Object { unpause $} ``` - 關閉 IO.NET 容器。開啟終端機(Powershell)後,輸入以下指令即可 ```powershell docker ps -aqf volume=/var/run/docker.sock | ForEach-Object { docker stop $ ;docker rm $ } ``` ### Docker daemon - 一般情況不需要設置它,除非有特殊的配置需求 ```powershell & 'C:\Program Files\Docker\Docker\resources\dockerd.exe' --register-service Restart-Service *docker* & 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchLinuxEngine ``` ## 半自動安裝腳本 1. 以管理員身分開啟終端機(Powershell)後,輸入以下指令,他會先強制重啟系統一次 ```powershell Set-ExecutionPolicy RemoteSigned bcdedit /set hypervisorlaunchtype auto Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe winget install Nvidia.CUDA -h --accept-package-agreements --accept-source-agreements --custom "-s nvcc_12.4" wsl --install --no-distribution Restart-Computer -Force ``` 2. 以管理員身分開啟終端機(Powershell)後,輸入以下指令,即完成環境配置 ```powershell winget install Docker.DockerDesktop -h --accept-package-agreements --accept-source-agreements --custom "install --accept-license --always-run-service" & $($env:ProgramFiles | Join-Path -ChildPath 'Docker\Docker\Docker Desktop.exe') ```