Docker是一個用於開發,發佈和運行應用程序的開放平臺。Docker使您可以將應用程序與基礎架構分開,從而能夠快速交付軟件。藉助Docker,您能夠以與管理應用程序相同的方式來管理基礎架構。經過利用Docker的方法來快速交付,測試和部署代碼,您能夠大大減小編寫代碼和在生產環境中運行代碼之間的延遲。linux
通常咱們寫程序,會有開發環境,測試環境,生產環境,不少bug都是環境問題。web
過去部署的思路,在開發環境打包,想跑到Window環境下運行。咱們得先在Window下載好.NET Framework,IIS等,配置好對應的環境變量,將包丟到iis的webapps文件夾下,才能跑起來。docker
如今Docker的思路,能夠將咱們的想要的環境構建成一個鏡像,而後咱們能夠推送到網上去。想要用這個環境的時候,在網上拉取一份就行了。ubuntu
你們必定遇到過在多個應用部署在同一臺服務器上,有一個應用出現了問題,致使CPU佔100%,其餘應用也都受到影響。還有就是好比有些應用用NET技術,有些應用用Php技術,這些不一樣應用各類的依賴軟件都安裝在同一個服務器上,可能就會形成各類衝突/沒法兼容。windows
對於虛擬機,主機服務器從下至上有三個基礎層:基礎架構,主機操做系統和虛擬機監控程序,最重要的是每一個虛擬機都有本身的操做系統和全部必要的庫。對於Docker,主機服務器僅具備基礎結構和操做系統,最重要的是容器引擎,該容器引擎使容器保持隔離狀態,但共享基本的OS服務。centos
由於容器須要的資源要少得多(例如,它們不須要完整的操做系統),因此它們易於部署而且啓動迅速。這樣能夠提升密度,這意味着能夠在同一硬件單元上運行更多服務,從而下降成本。api
做爲在同一內核上運行的反作用,與VM相比,您得到的隔離更少。瀏覽器
首先,安裝Docker ,參考官方文檔。服務器
而後,建立Docker.WebApi01項目架構
確保已選擇「啓用 Docker 支持」複選框,選擇所需的容器類型(Windows 或 Linux)。
接着,咱們打開Dockerfile文件, 請參閱Dockerfile引用,瞭解其中的命令:
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build WORKDIR /src COPY ["Docker.WebApi01/Docker.WebApi01.csproj", "Docker.WebApi01/"] RUN dotnet restore "Docker.WebApi01/Docker.WebApi01.csproj" COPY . . WORKDIR "/src/Docker.WebApi01" RUN dotnet build "Docker.WebApi01.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "Docker.WebApi01.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Docker.WebApi01.dll"]
上面代碼含義說明:
接着,調試
在工具欄的調試下拉列表中選擇「Docker」,而後開始調試應用。 你可能會看到提示信任證書的消息;選擇信任證書以繼續。
「輸出」 窗口中的「容器工具」 選項顯示正在進行的操做。 第一次時,可能須要一些時間來下載基本映像,但在後續運行時速度要快得多。
最後,構建及運行
docker build -t dockerwebapi01 -f ./Docker.WebApi01/Dockerfile . docker run --rm -it -p 49181:443 dockerwebapi01
注意這裏有一個坑直接在Dockerfile目錄下執行會報如下錯誤:
=> ERROR [build 3/7] COPY [Docker.WebApi01/Docker.WebApi01.csproj, Docker.WebApi01/]
遇到這個問題有兩個解決方案,其一是把Dockerfile文件放到sln同一個目錄下,而後執行docker build,另外一個是本文采用的方法,在sln目錄下執行,須要指定Dockerfile路徑
咱們在瀏覽器上輸入: https://localhost:49181/WeatherForecast 看看效果