前言:
最近學習了Docker相關技術點,國內關於Docker的資料大可能是基於Linux系統的,可是我對Linux又不熟(實際上沒用過,掩面哭笑.Jpg)。html
好在在Win10下也是支持Docker的,並且是支持Linux和Windows兩種容器。mysql
在Win10下運行容器和在Linux下是有一些區別的,不少命令都不同、容器網絡也不同,剛開始我就不明白這點,搭建應用老是錯誤不斷,web
網上相關Win10下的容器的資料有不多,特別是容器網絡這段,坑不是通常少。學習的過程是曲折的。sql
廢話少說,直奔主題吧,docker
1、Win10下安裝Docker
一、win10如下的那些Docker你們仍是別去看了,我的以爲浪費時間;win10下的Docker是Docker for windows,點擊這裏下載:戳這裏數據庫
二、下載完成後安裝,一直Next就好了,最後在桌面看到快捷方式windows
三、雙擊快捷方式啓動docker,第一次啓動須要註冊登陸,沒有帳戶的先去官網註冊:戳這裏網絡
四、註冊完成後輸入帳戶就能夠成功啓動docker了,啓動後能夠看到小鯨魚app
五、運行PowerShell驗證,輸入docker infoasp.net
2、Web應用
一、新建asp.net core測試項目
二、修改Controllers以及View
1 public IActionResult Index() 2 { 3 ViewData["Message"] = "Hello World"; 4 return View(); 5 }
三、修改View
1 @{ 2 ViewData["Title"] = "Home Page"; 3 } 4 <div style=" font-size:24px; font-weight:bold; text-align:center"> 5 @ViewData["Message"] 6 </div>
四、新建Dockerfile
1 FROM microsoft/dotnet:2.1-sdk AS build 2 WORKDIR /app 3 4 # copy csproj and restore as distinct layers 5 COPY *.sln . 6 COPY WebApp-HelloWorld/*.csproj ./WebApp-HelloWorld/ 7 RUN dotnet restore 8 9 # copy everything else and build app 10 COPY WebApp-HelloWorld/. ./WebApp-HelloWorld/ 11 WORKDIR /app/WebApp-HelloWorld 12 RUN dotnet publish -c Release -o out 13 14 15 FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime 16 WORKDIR /app 17 COPY --from=build /app/WebApp-HelloWorld/out ./ 18 ENTRYPOINT ["dotnet", "WebApp-HelloWorld.dll"]
3、部署在Docker容器中
一、進入demo路徑
1 cd X:\Users\漂亮的貓\Desktop\WebApp-HelloWorld
二、生成鏡像
1 docker build -t helloworld .
三、啓動鏡像,將本地8000端口映射到容器80端口
1 docker run --name helloworld -p 8000:80 helloworld
四、訪問localhost:8000驗證
OK,這就完成了,
emmmmm,好像有點簡單,,
那就稍微深刻一點,再加一個數據庫容器,從數據庫端返回數據
4、Web端修改
一、引用Dapper、MySql.Data
1 using Dapper; 2 using System; 3 using System.Collections.Generic; 4 using System.Data; 5 using System.Threading.Tasks; 6 using MySql.Data.MySqlClient; 7 8 namespace WebApp_HelloWorld.Controllers 9 { 10 public class DBService 11 { 12 protected IDbConnection conn; 13 14 public DBService() 15 { 16 conn = new MySqlConnection("server=198.198.198.181;User Id=root;password=mima2100;Database=mysql-db"); 17 } 18 19 public async Task<T> Single<T>(string sql, object paramPairs = null) 20 { 21 return await conn.QuerySingleOrDefaultAsync<T>(sql, paramPairs); 22 } 23 24 public async Task<int> Count(string sql, object paramPairs = null) 25 { 26 return await conn.QuerySingleOrDefaultAsync<int>(sql, paramPairs); 27 } 28 } 29 }
二、修改HomeController
1 public IActionResult Index() 2 { 3 var dbService = new DBService(); 4 var tb = dbService.Single<Tb>("select * from Tb limit 1").Result; 5 6 ViewData["Message"] = string.Format("Idx:{0},Name:{1}", tb.Idx, tb.Name); 7 //ViewData["Message"] = "Hello World"; 8 9 return View(); 10 }
三、Tb
1 public class Tb 2 { 3 public int Idx { get; set; } 4 public string Name { get; set; } 5 public DateTime CreateTime { get; set; } 6 }
5、容器端修改
一、拉取MySql容器
1 docker pull mysql
二、啓動容器
1 docker run --name mysql001 -e MYSQL_ROOT_PASSWORD=mima2100 -p 3306:3306 -d mysql
三、連接Mysql,Navicat工具,建立數據
四、從新發布web應用
1 docker stop 5b41 2 docker rm 5b41 3 docker build -t helloworld . 4 docker run --name helloworld -p 8000:80 helloworld
五、從新驗證
OK,完成了Docker從入門到放棄的第一步,哈