Docker應用:Hello World


前言:

  最近學習了Docker相關技術點,國內關於Docker的資料大多是基於Linux系統的,但是我對Linux又不熟(實際上沒用過,掩面哭笑.Jpg)。

好在在Win10下也是支持Docker的,而且是支持Linux和Windows兩種容器。

  在Win10下運行容器和在Linux下是有一些區別的,很多命令都不一樣、容器網絡也不一樣,剛開始我就不明白這點,搭建應用總是錯誤不斷,

網上相關Win10下的容器的資料有很少,特別是容器網絡這段,坑不是一般少。學習的過程是曲折的。

  廢話少說,直奔主題吧,

 

一、Win10下安裝Docker

1、win10以下的那些Docker大家還是別去看了,個人覺得浪費時間;win10下的Docker是Docker for windows,點擊這里下載:戳這里

2、下載完成后安裝,一直Next就行了,最后在桌面看到快捷方式

  

3、雙擊快捷方式啟動docker,第一次啟動需要注冊登錄,沒有賬戶的先去官網注冊:戳這里

4、注冊完成后輸入賬戶就可以成功啟動docker了,啟動后可以看到小鯨魚

  

  

5、運行PowerShell驗證,輸入docker info

  

二、Web應用

1、新建asp.net core測試項目

  

2、修改Controllers以及View

1         public IActionResult Index()
2         {
3             ViewData["Message"] = "Hello World";
4             return View();
5         }

3、修改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>

 4、新建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"]

 

三、部署在Docker容器中

1、進入demo路徑

1 cd X:\Users\漂亮的貓\Desktop\WebApp-HelloWorld

2、生成鏡像

1 docker build -t helloworld .

 

3、啟動鏡像,將本地8000端口映射到容器80端口

1 docker run --name helloworld -p 8000:80 helloworld

4、訪問localhost:8000驗證

 

OK,這就完成了,

emmmmm,好像有點簡單,,

 

那就稍微深入一點,再加一個數據庫容器,從數據庫端返回數據

四、Web端修改

1、引用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 }

2、修改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         }

3、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     }

 

五、容器端修改

1、拉取MySql容器

1 docker pull mysql

2、啟動容器

1 docker run --name mysql001 -e MYSQL_ROOT_PASSWORD=mima2100 -p 3306:3306 -d mysql

3、鏈接Mysql,Navicat工具,創建數據

4、重新發布web應用

1 docker stop 5b41
2 docker rm 5b41
3 docker build -t helloworld .
4 docker run --name helloworld -p 8000:80 helloworld

5、重新驗證

 

OK,完成了Docker從入門到放棄的第一步,哈

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM