本篇文章會介紹win10中wsl2的安裝和使用以及遇到的常見問題比如如何固定wsl2地址等問題的總結。
一、wsl2簡介
wsl是適用於 Linux 的 Windows 子系統,安裝指南:適用於 Linux 的 Windows 子系統安裝指南 (Windows 10)
簡單來說,以前想在windows中使用linux,需要安裝vmware虛擬機器,現在則不比這麼麻煩了,直接安裝linux子系統,秒開。
二、使用wsl2
按照官方文件安裝好wsl2之後,再順便安裝下Windows 終端,一起使用,效果更佳。
安裝好wsl2後,直接在選單中找到對應的wsl終端直接開啟即可,第一次用的時候讓你初始化一個使用者名稱和密碼,根據提示幾秒鐘即可初始化完成。
安裝好之後就可以愉快的玩耍了,貌似一切都ok。。。慢著,用久了,你會發現一些問題:
1. 安裝軟體太慢了
比如我使用的ubuntu20,安裝和更新軟體都特別慢,因為畢竟國內,這時候就要使用國內映象進行加速[ 0 ]。
第一步:備份原始檔
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
第二步:編輯/etc/apt/sources.list檔案
在檔案最前面新增以下條目,之後儲存即可生效(以阿里雲映象為例,操作前請做好相應備份):
vi /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
2. wsl2地址每次重新開機之後都會發生變化
一般來說這不是什麼大問題,但是別忘了我們要wsl是幹啥的,我們總是希望能夠在windows中訪問wsl中的一些服務,比如安裝的mysql、redis等,如果wsl的ip地址總是變化,豈不是每次開機都要在windows中手動設定一次ip地址[ 1 ]?固定ip地址的方法比較簡單,直接執行以下指令碼即可,我這裡安裝了docker,有些小夥伴沒安裝docker則需要修改下指令碼才行。
@echo off
setlocal enabledelayedexpansion
wsl -u root service docker start | findstr "Starting Docker" > nul
if !errorlevel! equ 0 (
echo docker start success
:: set wsl2 ip
wsl -u root ip addr | findstr "192.168.169.2" > nul
if !errorlevel! equ 0 (
echo wsl ip has set
) else (
wsl -u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1
echo set wsl ip success: 192.168.169.2
)
:: set windows ip
ipconfig | findstr "192.168.169.1" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 192.168.169.1 255.255.255.240
echo set windows ip success: 192.168.169.1
)
)
pause
將它儲存到檔案,比如劃分虛擬區域網&啟動docker.bat
,然後將其放到windows啟動目錄下[ 2 ]:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
之後,每次電腦啟動之後就會自動執行該指令碼了
3.windows本地ssh登陸wsl2
首先,wsl中已經安裝的ssh是不完整的或者有問題的,所以無論你怎麼改都不會生效,甚至ssh服務都無法正常啟動,正確的做法是先解除安裝ssh再重新安裝。
sudo apt-get purge openssh-server # purge 是解除安裝並刪除配置檔案
sudo apt-get install openssh-server
然後修改配置檔案/etc/ssh/sshd_config,新增如下配置
PermitRootLogin yes
修改PasswordAuthentication
配置項為yes,修改Port
埠號為2222
(22埠比較特殊,windows可能會使用到)
使用命令 service sshd restart
重啟ssh服務
做完以上修改之後,解決了第一個問題,即如何在windows使用工具ssh連線wsl2, 接下來要做的事情是如何在區域網中遠端登陸wsl2。
4.區域網遠端登陸wsl2
首先分析下為啥區域網其他機器無法連線wsl2
- 第一個原因,windows防火牆沒關閉或者沒有設定入站規則
- 第二個原因,也是最本質的原因,wsl2的地址是虛擬地址,並非是區域網中的實體地址
那怎麼解決呢?
- 關閉防火牆或者設定入站規則
其中設定入站規則是推薦的方式,網上教程較多,不贅述。 - 設定埠轉發,讓windows轉發來自特定埠的請求到wsl2
設定埠轉發的方法如下:
interface portproxy add v4tov4 listenport=【宿主機windows平臺監聽埠】 listenaddress=0.0.0.0 connectport=【wsl2平臺監聽埠】 connectaddress=【wsl2平臺ip】
比如,我這裡使用如下命令配置了win10 IpV4協議埠號2222轉發到地址為192.168.169.2的wsl埠號2222
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=192.168.169.2
- 檢視埠轉發
netsh interface portproxy show all
- 刪除埠轉發
netsh interface portproxy delete v4tov4 listenport=9696 listenaddress=0.0.0.0
完成以上四步設定,即可在區域網使用securityCRT工具或者putty遠端連線wsl了。
三、在wsl中使用docker
1.安裝docker
正常來說,應當上docker官網按照安裝文件來安裝,但是你會發現及時你更新了源,安裝速度仍然特別慢,高速開啟方式[ 3 ]為
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
2.安裝docker-compose
同理,正常來說,docker-compose的安裝方式應該遵循官方網站的指導 https://docs.docker.com/compose/install/ ,但是會非常慢,還是要另闢蹊徑[ 4 ]
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
最後,歡迎關注我的私有部落格~ https://blog.kdyzm.cn/