不用污染 host 環境,直接使用 Docker

除了在 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 到本機。

netcore000

  1. 輸入 docker pull microsoft/dotnet 下載 .NET Core image,其中 microsoft/dotnet 是 Microsoft 所維護的 image,適合 console app 使用
  2. 下載最新版 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

netcore001

  1. 輸入 docker run 建立 container 外,還會順便直執行 container

啟動 Container


1
$ docker start MyNetCore

使用 docker start 啟動 .NET Core container

既然 container 已經建立在硬碟,將來要在執行 container 就不必透過 docker run,直接執行 docker start 啟動 .NET Core container 即可

netcore002

  1. 輸入 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 下的指令

netcore003

  1. 輸入 docker exec -it MyNetCore bash 執行 MyNetCore container 的 Bash
  2. 輸入 dotnet —version,顯示 container 內已經安裝 .NET Core SDK
  3. 輸入 exit 離開 container 的 terminal

停止 Container


1
$ docker stop MyNetCore

使用 docker stop 停止 .NET Core container。

netcore004

  1. 輸入 docker stop MyNetCore 停止 MyNetCore container

刪除 Container


1
$ docker rm MyNetCore

使用 docker rm 刪除未執行的 .NET Core container。

Container 儘管不執行,但仍存在於硬碟中,若想徹底移除 .NET Core,必須先刪除 .NET Core container,然後再刪除 .NET Core image

netcore005

  1. 輸入 docker rm MyNetCore 刪除 MyNetCore container

刪除 Image


1
$ docker rmi microsoft/dotnet

使用 docker rmi 刪除 .NET Core image。

只要刪除 container 與 image,就可以徹底移除 app,這也是 Docker 受歡迎的原因,不再因為安裝任何 app 而污染 host 環境

netcore006

  1. 輸入 docker rmi microsoft/dotnet 刪除 .NET Core image

Summary


netcore007

Conclusion


  • 本文為 Docker 最基本操作,都是使用 Docker 一定要會的基本指令
  • 若有 .NET Core app 包成 Docker image,也是使用類似的方式安裝執行之
2018-02-25