前言:

  最近学习了Docker相关技术点,国内关于Docker的资料大多是基于Linux系统的,但是我对Linux又不熟(实际上没用过,掩面哭笑.Jpg)。

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

  在Win10下运行容器和在Linux下是有一些区别的,很多命令都不一样、容器网络也不一样,刚开始我就不明白这点,搭建应用总是错误不断,

网上相关Win10下的容器的资料有很少,特别是容器网络这段,坑不是一般少。学习的过程是曲折的。

  废话少说,直奔主题吧,

 

一、Win10下安装Docker

1、win10以下的那些Docker大家还是别去看了,个人觉得浪费时间;win10下的Docker是Docker for windows,点击这里下载:戳这里
<https://www.docker.com/products/docker-desktop>

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

  

3、双击快捷方式启动docker,第一次启动需要注册登录,没有账户的先去官网注册:戳这里 <http://hub.docker.com>

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 app10 COPY WebApp-HelloWorld/.
./WebApp-HelloWorld/11 WORKDIR /app/WebApp-HelloWorld 12 RUN dotnet publish -c
Release -o out13 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从入门到放弃的第一步,哈

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信