我的wsl 有docker-desktop與ubuntu,如今我將ubuntu備份後刪除,然後還原到d:槽,因為c槽還有docker-desktop 這樣我進入wsl 他會抓到ubuntu嗎?
你這樣做是完全可行的,關鍵在於「Ubuntu 發行版的名稱」跟「WSL 啟動行為」的關係。你只要注意命名和預設設定,就不會被 docker-desktop 干擾。
1. 你會不會抓到 Ubuntu?
重點是:wsl 启動時預設會進入「目前設定的預設發行版」,跟 C 槽、D 槽沒關係,只跟你自己之後用 wsl --set-default 設定的是哪一個有關係。
以你目前的情況:
textNAME STATE VERSION * Ubuntu Stopped 2 docker-desktop Stopped 2
代表你現在的「預設發行版」是 Ubuntu,而你把它備份後搬到 D 槽,用 wsl --import 匯入時,可以有兩種做法:
情況 A:匯入成「同名 Ubuntu」
powershellwsl --import Ubuntu D:\wsl\ubuntu D:\backup\ubuntu.tar wsl --set-default Ubuntu
這時會存在一個新的
Ubuntu發行版,存放在 D 槽,WSL 會抓到這個新的 Ubuntu,不會去抓舊的 C 槽那個(你已經刪除舊的)。$ wsl就會進到 D 槽的 Ubuntu,docker-desktop依然在 C 槽,兩者並存且互不影響。
情況 B:匯入成「不同名字,例如 Ubuntu-Home」
powershellwsl --import Ubuntu-Home D:\wsl\ubuntu D:\backup\ubuntu.tar
這時會多一個
Ubuntu-Home,你原本Ubuntu名稱沒有被覆蓋,你用wsl進的還是舊的 Ubuntu(如果還沒刪除)。進入方式就會變成:
wsl→ 預設發行版(舊 Ubuntu 或docker-desktop,看你設定)wsl -d Ubuntu-Home→ 進入你備份還原的那個 D 槽版本。
2. 你真正要問的是「進到那個 Ubuntu 嗎?」
只要你:
wsl --unregister Ubuntu刪掉舊的wsl --import Ubuntu D:\wsl\ubuntu ...用 同一個名字Ubuntu匯入必要時再
wsl --set-default Ubuntu
那之後你打
wsl或開 Windows Terminal 的「Ubuntu」頁籤,就會進到 D 槽那個新的 Ubuntu。這個動作跟
docker-desktop完全無關,docker-desktop會保留在 C 槽,繼續當它的docker-desktop發行版,不影響你用 Ubuntu。
3. 推薦操作順序(給你這種重度使用者)
powershell# 1. 先看目前狀態 wsl -l -v # 2. 備份 C 槽的 Ubuntu wsl --export Ubuntu D:\backup\ubuntu.tar # 3. 刪掉舊的 Ubuntu(移除 C 槽的發行版) wsl --unregister Ubuntu # 4. 把 Ubuntu 匯入到 D 槽,用同樣名字 wsl --import Ubuntu D:\wsl\ubuntu D:\backup\ubuntu.tar # 5. 設定為預設發行版 wsl --set-default Ubuntu # 6. 驗證:應該看到 Ubuntu 在 D 槽,docker-desktop 仍在 C 槽 wsl -l -v # 7. 進去 Ubuntu,確認 /home/你的帳號、Docker、工具等都正常 wsl -d Ubuntu
這樣之後你進 wsl、Windows Terminal 的 Ubuntu 標籤,都會進到 D 槽的那個 Ubuntu,docker-desktop 會照樣在旁邊乖乖跑,不會互相「抓錯」。
沒有留言:
張貼留言