1. 程式人生 > >Docker在Windows上執行NetCore系列(一)使用命令控制檯執行.NetCore控制檯應用 Docker在Linux/Windows上執行NetCore文章系列

Docker在Windows上執行NetCore系列(一)使用命令控制檯執行.NetCore控制檯應用 Docker在Linux/Windows上執行NetCore文章系列

原文: Docker在Windows上執行NetCore系列(一)使用命令控制檯執行.NetCore控制檯應用

 

系列文章:https://www.cnblogs.com/alunchen/p/10121379.html

本篇文章作業系統資訊

      Windows:Window 10

      Visual Studio:2017 15.8.0

 

建立專案並新增Dockerfile

      在VS2017及以上版本上建立一個控制檯專案,這裡的名稱叫【ConsoleAppDockerWindows2】。

建立DockerFile檔案

1)右鍵專案 --> 選中【新增】 --> 選中【容器業務流程協調程式支援】

clipboard

2)選擇【Docker Compose】

clipboard

3)目標OS:選擇【Windows】

clipboard

 

建立後的解析

      建立完成後,可以看到專案中多了DockerFile檔案,並且也多了docker-compose的專案。我們著重看DockerFile檔案,因為此檔案是程式執行在Docker中的配置檔案。而docker-compose可以刪除,其作用是在告訴VS所要執行docker的入口點,並且可以定義多個不同容器中的依賴關係來執行。這裡不講述docker-compose。

      因為我們在VS中執行Docker,建議不要刪除。

clipboard

 

怎麼執行呢?

 

通過命令執行Dockerfile並生成映象

      當完成建立Dockerfile檔案後,在控制檯可以看到此映象已經安裝在docker裡面了。

clipboard

 

      並且通過 【docker ps -a】檢視到已經新增到本地docker容器中。

      即當在VS中建立Dockerfile時,會自動地把程式新增到本地映象與容器中。

      執行程式有很多種方法:

1)點選VS中執行 Docker 按鈕,直接就可以執行

2)通過命令執行。

      第一種就不介紹了,介面華完成。

      第二種介紹一下。主要為了適應以後Linux的操作。

 

通過命令執行docker

      步驟是:編譯專案->新增到映象->將映象新增到容器

 

      1)首先開啟專案在本地包含Dockerfile的路徑,路徑裡面必須有Dockerfile的檔案。

clipboard

      並且修改一下Dockerfile檔案,主要修改一下路徑

clipboard

 

      2)然後生成映象,執行命令【docker build -t consoleappdockerwindows2-cmd . 】

      如圖:

clipboard

clipboard

 

      看到上圖執行成功。

      執行生成執行的命令,首先會去找到Dockerfile檔案,然後根據此檔案配置下載需要的環境。

      輸入【docker image】,可以看到執行映象已經存在了

clipboard

 

      3)把映象新增到容器中並執行

      使用docker run 【映象id】,就能執行映象了:

clipboard

 

下面說明說明一下Dockerfile

docker命令(FROM,COPY,RUN等)開頭,每個命令將按從上到下的順序執行。

  • FROM:指定要使用的docker映象,在第1行中我們指定了用於執行應用程式的microsoft/dotnet:2.1-runtime-nanoserver-1803映像。
  • WORKDIR:指定image的工作目錄。我們這裡使用/ app作為我們的執行程式目錄、/src編譯目錄。
  • COPY:將檔案從本地檔案系統複製到映像中。第一個COPY是將本地的csproj檔案複製到image中,第二個COPY是將當前所有檔案複製到image中。 複製我們將最初複製csproj檔案並執行restore然後複製所有剩餘檔案並執行dotnet publish來構建我們的應用程式。

 

系列文章

Docker在Linux/Windows上執行NetCore文章系列

 

可以關注本人的公眾號,多年經驗的原創文章共享給大家。