分享程式代碼相關筆記
目前文章總數:157 篇
最後更新:2024年 12月 07日
官方先決條件,補充資訊,整理成以下:
1. 需要安裝 NET 8.0 |
2. .NET Aspire SDK |
3. 安裝 Visual Studio 2022 需要更新到 17.10.0 以上 |
4. Windows 系統內需要有 Windows Docker Desktop 或者 Podman 相關開發時可運行的容器化。 |
5. 基於第 4. Windows 10/11 專業、企業版以上(才支援 Windows Docker Desktop) |
6. 啟用虛擬化技術 Hyper-V 、WSL 2 並且 16G 記憶體以上(若用 Visual Studio 開發,可能 32G 以上才適合開發) |
※ Hyper-V 使用於 Windows To Container
※ WSL 2 使用於 Linux To Container
其中先決條件中,有以下描述,微軟建議開發時安裝 Docker Desktop 或 Podman
An OCI compliant container runtime, such as:
Docker Desktop or Podman.
OCI (Open Container Initiative, 開放容器化倡議) Linux Foundation 推動的開放標準組織,旨在為容器技術建立統一的標準,確保容器技術在不同平台間的互操作性和一致性。
組成成分有 2 :
1. OCI 容器鏡像格式規範 | 定義了容器鏡像的結構,包括如何打包應用和依賴,使得這些容器鏡像能夠在不同的 OCI 兼容平台上運行。 |
2. OCI 運行時規範 | 定義了容器在啟動和運行時的行為,使得不同的容器運行時環境(如 Docker 和 containerd)都可以一致地管理和運行容器。 |
簡單說,就是不同作業系統、跨平台上,容器化技術都用統一的規範,避免因為不同的平台而需要開發者特殊改造容器
在 Windows 作業系統上運行 Docker Desktop 或 Potman 就相同於 Linux 原生地 Docker-cli,因為都遵守 OCI
※理論上如此,但實際上作業系統還是有根本的差異,所以意思是 盡可能遵守OCI
微軟建議 Windows 安裝 OCI 的方法有 2 種,加上 Step 2. 可以理解到還可以用 WSL 的方式只安裝 Docker-cli
在 Windows 作業系統可進行容器化,這 3 種方式也對 Windows 有限制,整理如下:
※共同的限制 : 安裝 Windows 10/11 作業系統:家用、企業、專業版
1. Windows Docker Deskop | Windows 版本更新至內部版本 19044 (Docker Desktop) 以上 |
2. Podman | Windows 版本更新至內部版本 19043 |
3. WSL 2 只進行 Docker-cli 的安裝 | Windows x64 版本 1903 內部版本 18362 以上 |
ARM64 系統 版本 2004 內部版本 19041 以上 |
隨意建立一個 Aspire Host 空專案,若沒有安裝 OCI 直接執行,會出現以下錯誤:
Watch task over Kubbernetes Container resources terminated unexpectedly.
找不到 Container 容器化的方式,因此終止。
需先至 Windows Docker Desktop 官網 下載軟體安裝,
依照自己的環境安裝對應的版本:
依照著步驟進行安裝
直到安裝完成:
安裝完成後,電腦需重新開機。並且重開機完成後打開應用程式
會出現協議確認,接受( Accept )即可:
可以選擇 Skip 跳過,或依照自己的方式登入
若是老用戶,會有自己的帳號,需要在官網登入後,自行手動 點擊 Launch Docker Desktop
安裝完成後,預設會是 Launch to Windows Container
需要切換成 Linux
Docker desktop to Windows container 目前有人在 2023/11/16 回報異常
最後此 BUG 仍未調整,因此現行仍以 Linux 為主
最後再回到 Visual Studio 2022 啟動 Aspire Host 專案,可以發現可正常啟動。
需先至 Podman 官網 下載軟體安裝,
依照自己的環境安裝對應的版本:
依照著步驟進行安裝
Compose、Podman 必需安裝,然後 Install
如第一部分 Step 7. 所述,如果用 Hyver-V 會出現一些問題,因此要選擇 WSLv2 安裝。
過程中可保留預設、然後持續 next
直到所有組件的安裝完成,並且在 active 狀態
最後再回到 Visual Studio 2022 啟動 Aspire Host 專案,可以發現可正常啟動。
開啟 Windows 作業系統 -> 程式和功能 -> 開啟或關閉 Windows 功能 -> 打勾 WSL (如下圖):
打勾後進行安裝:
重新啟動:
開啟 PowerShell 輸入以下,可以發現目前沒有任何 Linux 作業系統
wsl
參考微軟啟用說明,我們在 PowerShell 輸入以下,正式啟用 WSL :
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
上述步驟完成後,要執行以下命令,讓 WSL 用第 2 版,因為第 1 版 Docker-Cli 已經不支持了
wsl --set-default-version 2
Docker for Windows 官方文件已經要求 WSL 2 ,沒有再支援 WSL 1
如果堅持使用 WSL 1 ,執行到最後,當要啟動 Docker 時
sudo service docker start
sudo service docker status
顯示成功,但實際上失敗了
sudo cat /var/log/docker.log
檢查 Log 會出現失敗
這邊選擇 Ubuntu 20.04 版本進行安裝
打開 PowerShell 到檔案的目錄下,進行安裝
輸入以下指令:
※在此路徑下:
安裝完成後,Windows -> 左下角開始 -> 會出現 Ubuntu 的按鈕,點開
第一次啟動會有此畫面:
接著在系統中輸入 Ubuntu 指令,開始進行安裝 Docker
可參考此篇0001. Ubuntu 上安裝 Docker 與各個容器、Asp.net Core網站安裝 Docker 過程
簡化整套指令如下:
sudo apt update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo apt-get install docker-compose
如果 Step 9. 無法自動安裝,可能遇到環境問題:
被防火牆擋住了之類的,但自己的環境並沒有權限,就要考慮手動安裝
官方手動安裝文件
官方建議點開下載此目錄
https://download.docker.com/linux/ubuntu/dists/.
安裝以下套件:
sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
./docker-ce_<version>_<arch>.deb \
./docker-ce-cli_<version>_<arch>.deb \
./docker-buildx-plugin_<version>_<arch>.deb \
./docker-compose-plugin_<version>_<arch>.deb
實際上我們的版本要去的目錄(依照自己的 Windows 作業系統下載):
https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/
下載後可能會有對應的 5 個檔案
打開 WSL 2 的 Ubuntu 22.04 系統,執行以下代碼(這是範例的,要依照自己下載版本):
sudo dpkg -i ./containerd.io_1.7.22-1_amd64.deb \
./docker-ce_27.3.1-1_ubuntu.20.04_focal_amd64.deb \
./docker-ce-cli_27.3.1-1_ubuntu.20.04_focal_amd64.deb \
./docker-buildx-plugin_0.17.1-1_ubuntu.20.04_focal_amd64.deb \
./docker-compose-plugin_2.29.7-1_ubuntu.20.04_focal_amd64.deb
再輸入以下指令檢查 Docker-cli 是否安裝完成:
sudo docker info
可以確認已安裝完成:
最後再回到 Visual Studio 2022 啟動 Aspire Host 專案,可以發現可正常啟動。