前言:

  最近学习了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

         public IActionResult Index()
{
ViewData["Message"] = "Hello World";
return View();
}

3、修改View

 @{
ViewData["Title"] = "Home Page";
}
<div style=" font-size:24px; font-weight:bold; text-align:center">
@ViewData["Message"]
</div>

4、新建Dockerfile

 FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app # copy csproj and restore as distinct layers
COPY *.sln .
COPY WebApp-HelloWorld/*.csproj ./WebApp-HelloWorld/
RUN dotnet restore # copy everything else and build app
COPY WebApp-HelloWorld/. ./WebApp-HelloWorld/
WORKDIR /app/WebApp-HelloWorld
RUN dotnet publish -c Release -o out FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/WebApp-HelloWorld/out ./
ENTRYPOINT ["dotnet", "WebApp-HelloWorld.dll"]

三、部署在Docker容器中

1、进入demo路径

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

2、生成镜像

 docker build -t helloworld .

3、启动镜像,将本地8000端口映射到容器80端口

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

4、访问localhost:8000验证

OK,这就完成了,

emmmmm,好像有点简单,,

那就稍微深入一点,再加一个数据库容器,从数据库端返回数据

四、Web端修改

1、引用Dapper、MySql.Data

 using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;
using MySql.Data.MySqlClient; namespace WebApp_HelloWorld.Controllers
{
public class DBService
{
protected IDbConnection conn; public DBService()
{
conn = new MySqlConnection("server=198.198.198.181;User Id=root;password=mima2100;Database=mysql-db");
} public async Task<T> Single<T>(string sql, object paramPairs = null)
{
return await conn.QuerySingleOrDefaultAsync<T>(sql, paramPairs);
} public async Task<int> Count(string sql, object paramPairs = null)
{
return await conn.QuerySingleOrDefaultAsync<int>(sql, paramPairs);
}
}
}

2、修改HomeController

         public IActionResult Index()
{
var dbService = new DBService();
var tb = dbService.Single<Tb>("select * from Tb limit 1").Result; ViewData["Message"] = string.Format("Idx:{0},Name:{1}", tb.Idx, tb.Name);
//ViewData["Message"] = "Hello World"; return View();
}

3、Tb

     public class Tb
{
public int Idx { get; set; }
public string Name { get; set; }
public DateTime CreateTime { get; set; }
}

五、容器端修改

1、拉取MySql容器

 docker pull mysql

2、启动容器

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

3、链接Mysql,Navicat工具,创建数据

4、重新发布web应用

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

5、重新验证

OK,完成了Docker从入门到放弃的第一步,哈

Docker应用:Hello World的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. Linux debug

    proc文件系统中可以查看一些正在运行的变量如device-tree sh-3.2# cat /proc/device-tree/ #address-cells fixedregulator@9/ # ...

  2. java基础 -- 经典排序

    ----  冒泡排序 方法: 1.每次比较相邻的两个数 2. 小的交换在前面 3.每轮结束后最大的数交换到最后 代码实现: /* * 冒泡排序 * */ public class SortNum { ...

  3. API Test WebApiTestClient工具安装及使用

    一.guget安装: 1.解决方案右键-管理解决方案的nuget程序包打开如下图: 搜索WebApiTestClient,然后选择查询出的项目,右边点击安装即可:   2.安装会有如下图提示: 确定即 ...

  4. Tigase 发送消息的流程源码分析

    XMPP 的<message/>节是使用基本的”push”方法来从一个地方到另一个地方得到消息.因为消息通常是不告知的,它们是一种”fire-and-forget”(发射后自寻目的)的机制 ...

  5. Samtools在Linux上非root权限的安装

    第一次在Linux上不用root权限安装软件,查看了很多博客,并实践安装成功.大致总结了一下samtools的安装过程,仅供大家参考,如有不对的地方,欢迎指正~ samtools安装过程中依赖于lzm ...

  6. centos 安装nvm和node.js

    #安装githubyum install git -y #下载nvmgit clone git://github.com/creationix/nvm.git ~/nvm #设置nvm 自动运行;ec ...

  7. Python 3.6安装yaml时报"AttributeError: module 'pip' has no attribute 'main'"和“Non-zero exit code”错误

    1.Python 3.6安装yaml时一开始报AttributeError: module 'pip' has no attribute错误,根据网上提供的解决方法修改Pycharm安装目录D:\Pr ...

  8. Sublime Text 3安装emmet(ZenCoding)

    1.安装 Package Ctrol: 使用 ctrl + - 打开控制台,输入以下代码 import urllib.request,os; pf = 'Package Control.sublime ...

  9. 对于新版本的webstorm对vue的支持

    webstorm 对于官方vue的支持,直到2017.1,这个版本,之后的版本不能直接安装vue插件,这时候就需要自己手动新建vue模板了

  10. C#中一些关联名词的含义归纳

    形参/实参:定义一个方法,方法中需要传输的参数为形参,实际调用方法时候传入的参数为实参. 方法/函数:两个没有本质上的区别,都是指类中的一些操作. 委托/事件:委托(delegate)是存有对某个方法 ...