• Win10上的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漂亮的猫DesktopWebApp-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从入门到放弃的第一步,哈

    出处:https://www.cnblogs.com/lanxiaoke/p/10432631.html

  • 相关阅读:
    9.9递归和动态规划(七)——实现很多图片编辑软件都支持的“填充颜色”功能
    使用azure send grid发送email
    (C++ STL)list的实现
    安卓源代码----安卓系统启动过程(初次研究源代码,表述不当还请见谅)
    Mqtt协议IOS端移植3
    [Servlet&amp;JSP] 标准标签
    table合并单元格
    解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 && 一般的浏览器input和button的高度不一致问题
    如何使一个div能够铺满整个页面? && 模态框的制作 && outerHTML
    原生js实现轮播图
  • 原文地址:https://www.cnblogs.com/mq0036/p/11722376.html
Copyright © 2020-2023  润新知