**简要描述:**

- VS2017的docker支持工具,支持对.Net Framework,.Net Core控制台或者Web应用,在docker中生成,调试,运行。对于.Net Framework支持windows容器与镜像, 对于.Net Core应用支持linux容器与镜像. VS2017 Preview版本对于.Net Core对于linux还是windows容器与镜像都是支持的。

**环境准备:**
```
安装docker for windows,安装步骤参照前面的【Docker安装流程】
在docker里配置私有仓库,Setting->Daemon->Insecure registries 填入私有仓库url
在docker里配置共享磁盘,用来存放容器。一般共享C盘,Setting->Shared Drives

```

**创建.Net Core Web项目:**
- .Net Core Web本身就可以用控制台的方式来运行,这个跟我们所用的api框架运行原理是类似的。
- .创建项目后,选择项目->添加->docker 支持


- .在项目上添加【docker 支持】后,就会有个docker-compose的项目添加进来.在docker-compose的项目里,产生了一些.yml文件。并在【WebApplication2】项目中,增加了个DockerFile的文件.

**docker-compose介绍:**
- .docker-compose是用来在Docker中定义和运行复杂应用的工具,现在集成到VS里面来了。
1. docker-compose和VS解决方案的关系
```
一个解决方案对应一个docker-compose项目,它由docker-compose.yml和它的子文件组件,子文件用来对它进行补充!
```
2. docker-compose和VS与项目的关系
```
一个docker-compose包括了所有可以发布的项目,这些项目在compose里被称为一个服务!
```
3. Dockerfile与VS项目的关系
```
一个Dockerfile对应一个具体的项目,可以是网站,API,控制台程序等,主要对它们进行发布,运行等!
```
4. docker-compose和Dockerfile的关系
```
一个docker-compose会包括多个Dockerfile,而每个Dockerfile对应于一个镜像,也就是说,很多镜像组件了一个服务,一个docker-compose,我们可以按着自己的规则去划分服务,docker-compose最小管理单元是"服务"!
```
5. 各.yml文件的作用
```
docker-compose.ci.build.yml定义了编译项目的ci命令,基础镜像版本
docker-compose.yml定义了个项目对应的镜像集合,镜像对应的DockerFile路径及名称
docker-compose.override.yml定义了环境变量,与宿主的映射端口
docker-compose.vs.debug.yml定义了在debug模式下的docker编译的配置
docker-compose.vs.release.yml定义了在release模式下的docker编译的配置
详细了解.yml文件,请参考下面的网址:
http://www.cnblogs.com/freefei/p/5311294.html
```

**DockerFile介绍:**
- .DockerFile定义了项目编译成镜像的行为过程。
```
详细了解DockerFile,请参考下面的网址:
http://blog.csdn.net/wsscy2004/article/details/25878223
```

**Docker环境下debug项目:**
1. 选择docker-compose,设为启动项目
2. 将本地的docker切换到linux容器模式
4. 设置debug模式下
5. 在VS中按f5,运行项目,你可以在vs的“输出”里,看到整个的编译过程,并且项目编译成镜像,生成容器,运行容器的过程。
6. 在powershell里,执行“docker ps”就可以看到,有个容器已经运行起来了。


7. 在powershell里,执行“docker images”就可以看到新生成的镜像。


8. 新的镜像的名称与tag是在docker-compose.vs.debug.yml定义的,这些都可以在文件里修改。


9. 在vs的项目中设置断点,并访问已经运行起来的页面,如果是接口的话,就访问接口,就可以调试程序。


10. 调试过程中,如果发现问题,修改了代码,只要重新f5运行,会在docker里自动编译新的镜像与容器。
11. 这边要强调下的是,在debug下生成的镜像不是可用的镜像,因为它只能被vs使用。如果手动用"docker run"是不能生成容器的.

**Docker环境下Release项目:**
1. 如果在debug下,已经没有任何问题了,那么就可以把项目release到docker中,作为测试或者发布用
2. Release下主要在docker-compose.vs.release.yml这个文件里配置,生成的镜像名称与tag都可以改.这里要注意的是即使在镜像名称上加了私有仓库的地址[私有仓库地址:端口]\imageName: tag,镜像编译成功后,也是不会自动推到私有仓库的。
3. 设置Release模式
4. 在vs按f5,运行,成功后,可以看到对应的镜像已经生成成功了。


5. 因为vs是集成了docker-compose的功能,所以通过powershell,cd到项目的docker-compose文件的所在目录,运行docker-compose build一样可以成功生成镜像.关于docker-compose 命令更多的知识可以,参考:http://www.cnblogs.com/52fhy/p/5991344.html

**推送镜像到私有仓库并发布:**
1. 通过"docker push"将生成镜像推送到私有仓库。
2. 在测试环境中,通过"docker pull"将镜像拉取到,并运行,就可以访问了.

VS2017 docker部署工具的使用的更多相关文章

  1. Docker 管理工具 Portainer部署

    Docker 管理工具 Portainer部署 一.官网 官网:http://www.portainer.io 演示地址:http://demo.portainer.io 用户名:admin 密码:t ...

  2. Docker管理工具 - Swarm部署记录

    之前介绍了Docker集群管理工具-Kubernetes部署记录,下面介绍另一个管理工具Swarm的用法,Swarm是Docker原生的集群管理软件,与Kubernetes比起来比较简单. Swarm ...

  3. 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署

    最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docke ...

  4. 手把手教你 Docker部署可视化工具Grafana

    一.Grafana的简单介绍 Grafana是开源的.炫酷的可视化监控.分析利器,无论您的数据在哪里,或者它所处的数据库是什么类型,您都可以将它与Grafana精美地结合在一起.它还有丰富的套件供您选 ...

  5. Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署

    运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...

  6. NetCore的Docker部署

    NetCore的Docker部署 一.NetCore与Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或 ...

  7. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  8. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  9. Capsule:开源的 JVM 应用部署工具

    [编者按]本文作者 Ron Pressler 是 Parallel Universe 公司的创始人,拥有着丰富的高性能开发经验.通过这篇文章,Ron 向大家详细介绍了全新的开源 JVM 部署工具--C ...

随机推荐

  1. Java-二进制转10进制原理机制

    任何文件在计算机储存时都是以二进制储存的,由 1和0 组成,如: 101010101010100111110100101010 现在有一组二进制数据: 10010110 那么他转成10进制是多少呢(我 ...

  2. PHP的会话控制

    页面数据的作用域: 当前页共享数据:变量.常量 两个页面间传递数据:get,post 跟踪用户的多页面数据共享(会话):session.cookie 全局数据共享:文件.数据库.memcached C ...

  3. Spring Boot 返回 XML 数据,一分钟搞定!

    Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...

  4. com.javax.servlet 慢慢看完慢慢学完

    1.接口 RequestDispatcher 类说明 定义一个对象,从客户端接收请求,然后将它发给服务器的可用资源 (例如Servlet.CGI.HTML文件.JSP文件).Servlet引擎创 建r ...

  5. thinkphp自动创建数据对象分析

    thinkphp有一个自动创建数据对象的create方法,核心代码如下 public function create($data='',$type='') { // 如果没有传值默认取POST数据 i ...

  6. Tomcat:At least one JAR was scanned for TLDs yet contained no TLDs

    启动Tomcat的时候,经常见到这样的BUG:   14-Apr-2019 13:53:25.198 信息 [localhost-startStop-1] org.apache.jasper.serv ...

  7. python字典类型

    字典类型简介 字典(dict)是存储key/value数据的容器,也就是所谓的map.hash.关联数组.无论是什么称呼,都是键值对存储的方式. 在python中,dict类型使用大括号包围: D = ...

  8. python的partial()用法说明

    在functools模块中有一个工具partial(),可以用来"冻结"一个函数的参数,并返回"冻结"参数后的新函数. 很简单的解释,也是官方手册给的示例.对于 ...

  9. 分布式系统监视zabbix讲解一之zabbix安装--技术流ken

    zabbix概述 Zabbix是什么 Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持. Zabbix 是一个企业级的分布式开源监控方案. Zabbi ...

  10. eclipse如何将项目上传到码云

    把Eclipse项目上传到码云的步骤: 一.将代码提交到本地 1.登录码云:新建项目 2.输入项目名: 3.空项目创建成功如下图: 4.右键点击Eclipse的项目,选择“Team”——>“Sh ...