如何使用 Docker 安裝 .NET Core ?
不用污染 host 環境,直接使用 Docker
Contents
除了在 Windows、Mac、Linux 安裝原生的 .NET Core 外,也可以使用 Docker 的方式安裝 .NET Core。
Version
macOS High Sierra 10.13.3
Docker for Mac 17.20.0-ce-mac49 (21995)
.NET Core 2.1.4
下載 .NET Core Image
1 | $ docker pull microsoft/dotnet |
使用 docker pull
下載最新版 .NET Core image 到本機。
- 輸入
docker pull microsoft/dotnet
下載 .NET Core image,其中microsoft/dotnet
是 Microsoft 所維護的 image,適合 console app 使用 - 下載最新版 image 成功
建立 Container
1 | $ docker run --name MyNetCore -dt microsoft/dotnet |
使用 docker run
由 .NET Core image 建立 container 並執行之。
- —name : 替 container 取一個人能夠識別的名字
MyNetCore
(若省略,Docker 將隨機命名,將來不易維護) - -d :
d
etach,建立 container 後,就脫離目前 process - -t :
t
terminal,預設執行/bin/bash
process,為了讓 container 啟動後不會立即停止 - microsoft/dotnet : 為 .NET Core 官方 image
- 輸入
docker run
建立 container 外,還會順便直執行 container
啟動 Container
1 | $ docker start MyNetCore |
使用 docker start
啟動 .NET Core container
既然 container 已經建立在硬碟,將來要在執行 container 就不必透過
docker run
,直接執行docker start
啟動 .NET Core container 即可
- 輸入
docker start MyNetCore
啟動MyNetCore
container
進入 .NET Core 的 Terminal
1 | $ docker exec -it MyNetCore bash |
使用 docker exec -it
對 .NET Core 下指令。
要對 container 內部的 Linux 下指令,必須先將 Bash 包起來
- exec : 執行 Container 內的的 Linux 指令
- -i :
i
teractive,可對 terminal 輸入資料 - -t :
t
terminal,可對 terminal 顯示資料 - MyNetCore : container 名稱
bash
: 對 container 下的指令
- 輸入
docker exec -it MyNetCore bash
執行MyNetCore
container 的 Bash - 輸入
dotnet —version
,顯示 container 內已經安裝 .NET Core SDK - 輸入
exit
離開 container 的 terminal
停止 Container
1 | $ docker stop MyNetCore |
使用 docker stop
停止 .NET Core container。
- 輸入
docker stop MyNetCore
停止MyNetCore
container
刪除 Container
1 | $ docker rm MyNetCore |
使用 docker rm
刪除未執行的 .NET Core container。
Container 儘管不執行,但仍存在於硬碟中,若想徹底移除 .NET Core,必須先刪除 .NET Core container,然後再刪除 .NET Core image
- 輸入
docker rm MyNetCore
刪除MyNetCore
container
刪除 Image
1 | $ docker rmi microsoft/dotnet |
使用 docker rmi
刪除 .NET Core image。
只要刪除 container 與 image,就可以徹底移除 app,這也是 Docker 受歡迎的原因,不再因為安裝任何 app 而污染 host 環境
- 輸入
docker rmi microsoft/dotnet
刪除 .NET Core image
Summary
Conclusion
- 本文為 Docker 最基本操作,都是使用 Docker 一定要會的基本指令
- 若有 .NET Core app 包成 Docker image,也是使用類似的方式安裝執行之