一.分別在Windows/Mac/Centos上安裝Docker Windows上下載地址:https://docs.docker.com/docker-for-windows/install/(window上安裝的常見問題和解決方案請參考下方步驟六) Mac上下載地址:https://hub.do ...
一.分別在Windows/Mac/Centos上安裝Docker
Windows上下載地址:https://docs.docker.com/docker-for-windows/install/(window上安裝的常見問題和解決方案請參考下方步驟六) Mac上下載地址:https://hub.docker.com/editions/community/docker-ce-desktop-mac Centos上安裝Docker請參考我上篇文章鏈接:https://www.cnblogs.com/peyshine/p/12915317.html二.打開vs 新建一個Web程式



對dockerfile文件解釋說明:
1.FROM 通過FROM指令來設置要製作的鏡像基於哪個鏡像,FROM指令必須是整個Dockerfile的第一個指令,如果指定的鏡像不存在預設會自動從Docker Hub上進行拉取 2.WORKDIR 通過workdir指令用於設置Dockerfile中的RUN、CMD和ENTRYPOINT指令執行命令的工作目錄(預設為/目錄),該指令在Dockerfile文件中可以出現多次,如果使用相對路徑則為相對於WORKDIR上一次的值 3.COPY 通過COPY指令來從指定路徑拷貝一個文件或目錄到容器的指定路徑中 4.RUN RUN指令會在一個新的容器中執行任何命令,然後把執行後的改變提交到當前鏡像,提交後的鏡像會被用於Dockerfile中定義的下一步操作,RUN中定義的命令會按順序執行並提交,這正是Docker廉價的提交和可以基於鏡像的任何一個歷史點創建容器的好處,就像版本控制工具一樣 5.EXPOSE 通過EXPOSE指令用來告訴Docker這個容器在運行時會監聽哪些埠 6.ENTRYPOINT 通過ENTRYPOINT指令我們指定在容器啟動時要運行的應用程式 關於dockerfile的更多用法可以參考:https://docs.docker.com/engine/reference/builder/三.DotNet Core 程式在Windows Docker上的運行


可以看到運行之前,VS先做了幾個檢查工作
- windows上是否安裝了Docker Desktop
- Docker Desktop是否在運行
- Docker Desktop的操作系統模式是否與項目的目標操作系統匹配
- 指定需要的鏡像本地是否存在,不存在的就會進行拉取
- 檢查完了之後就是打包鏡像和運行容器
四.打包發佈鏡像到https://hub.docker.com/
選擇發佈到Docker hub,輸入自己的賬號密碼,沒有的話可以註冊一個







五.DotNet Core 程式在Centos Docker上的運行
重新在VS中添加一個dockerfile,這次選擇linux平臺的

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 COPY . /app ENTRYPOINT ["dotnet", "WebApp_Docker.dll"]發佈後將Release文件下所有文件上傳到centos上,然後執行以下命令打包鏡像
docker build -t docker_web_test:1.0 .
後面的點可以列印出具體的執行步驟細節


docker run --name docker_web_test -d -p 7788:80 docker_web_test:1.0

六.可能遇見的錯誤解決方案以及小提示:
1.在window上安裝docker時需要勾選上Hyper-V

