Docker第一个应用:Hello World
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从入门到放弃的第一步,哈
Docker第一个应用:Hello World的更多相关文章
- Docker 第一篇 认识Docker 的作用好处
Docker 第一篇 认识Docker 的作用好处 (1)什么是Docker (2)Docker 优势劣势 Docker是去年开始关注并学习的,因为项目用到了AspnetCore 了解了之后总感觉会用 ...
- Docker第一弹:下载运行hello-world程序
1.需要安装好docker程序 没有安装的请看在centos 6.8下安装docker 2.从docker镜像仓库中拉去hello-world镜像 docker pull hello-world 3. ...
- Docker 第一篇--初识docker
已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...
- docker第一章:docker核心概念及centos6下安装
Docker三大核心概念 镜像 容器 仓库 镜像 docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统. 容器 1.容器是从镜像创建的应用运行实例,容器和 ...
- Docker | 第一章:Docker简介
前言 作为本系列的起始章节,本章节主要是对Docker的相关概念进行简单阐述下.自此也是查阅了相关资料,奈何也都是英文版居多,看的是有点头大的.现在悔不当初不好好学习英文了.o(︶︿︶)o 唉 Doc ...
- docker第一章
简介 Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并遵从Apache2.0协议开源. D ...
- docker 第一课 —— 从容器到 docker
1. 容器的概念 一种虚拟化的解决方案 与虚拟机所不同的是,虚拟机通过中间层,将一台或多台独立的机器虚拟运行于物理硬件之上: 而容器是直接运行于操作系统内核之上的用户空间: 基于上述,容器虚拟化也被称 ...
- docker第一篇 容器技术入门
Container 容器是一种基础工具,泛指任何可以容纳其它物品的工具. Linux Namespaces (docker容器技术主要是通过6个隔离技术来实现) namespace 系统调用参数 ...
- Centos7部署FytSoa项目至Docker——第一步:安装Docker
FytSoa项目地址:https://gitee.com/feiyit/FytSoaCms 部署完成地址:http://82.156.127.60:8000/ 先到腾讯云申请一年的云服务器,我买的是一 ...
随机推荐
- CAFFE 调试
在Make.config 文件里将DEBUG=1的注释去掉,再make.可以用IDE如eclipse来import makefile工程.必要时按照IDE的提示将源文件cpp和对应的bin文件对应.
- 在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持
在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持 http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.htm ...
- HTML(二)选择器
1.id选择器 一对一关系 <div id="only">123</div> #only{ background-color:black; } 2.clas ...
- sas 变量类型转换
data b2: set b1; newbl=put(oldbl,10.); run; 根据转换后的类型灵活填写
- DevExpress v18.1新版亮点——Reporting篇(一)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Reporting v18.1 的新功能,快来下载试用新版本 ...
- elk之elasticsearch安装
环境: centos7 jdk8 参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.htmlhttp:// ...
- java 设计模式参考资料
参考博客 http://www.cnblogs.com/lin3615/p/3783272.html 设计模式之责任链模式http://www.cnblogs.com/draem0507/p/3784 ...
- Nio Bio Netty Tomcat的NIO
socket():新建一个文件 bind():绑定到端口,第一个参数就是socket()方法产生的文件描述符 listen():确定新建的这个socket是一个服务器,被动等待网络其他进程链接,参数有 ...
- synchronized(九)
在Java中是有常量池缓存的功能的,就是说如果我先声明了一个String str1 = “a”; 再声明一个一样的字符串的时候,取值是从原地址去取的,也就是说是同一个对象.这也就导致了在锁字符串对象的 ...
- foreman源NO_PUBKEY 6F8600B9563278F6
/etc/apt/sources.list.d/foreman.list # foreman deb http://deb.theforeman.org xenial stable 一条命令解决 ap ...