**简要描述:**

- 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. 使用redis配置分布式session

    1. spring-redis-session 1.1. 配置 /** * @author laoliangliang * @date 2018/12/21 17:19 */ @Configurati ...

  2. linux上安装jdk环境

    只在于安装jdk1.6.jdk1.7和jdk1.8,其他版本请绕行,目的在于方便自己和大家以后急于做jdk环境,苦于没有jdk安装包和设置变量的过程,我将安装包均放在云盘中, 需要直接在连接中找即可: ...

  3. 工作随笔—Elasticsearch大量数据提交优化

    问题:当有大量数据提交到Elasticsearch时,怎么优化处理效率? 回答: 批量提交 当有大量数据提交的时候,建议采用批量提交. 比如在做 ELK 过程中 ,Logstash indexer 提 ...

  4. python基础-变量运算符(3)

    一.注释 注释就是对代码的解释和说明.目的是为了让别人和自己很容易看懂.为了让别人一看就知道这段代码是做什么用的.正确的程序注释一般包括序言性注释和功能性注释.序言性注释的主要内容包括模块的接口.数据 ...

  5. 【hadoop】1、MapReduce进行日志分析,并排序统计结果

    1.网上很多关于搭建Hadoop集群的知识,这里不多做叙述,并且本机运行Hadoop程序是不需要hdfs集群的,我们本机运行只做个demo样式,当真的需要运行大数据的时候,才需要真正的集群 2.还有就 ...

  6. ASP.NET Core微服务+Tabler前端框架搭建个人博客1--开始前想说的话

    写在前面 本人为在读研究生,特别喜欢.NET,觉得.NET的编程方式.语法都特别友好,学习.NET Core已经差不多有一年半了,从一开始不知道如何入门到现在终于可以编写一些小的应用程序,想一想还是非 ...

  7. VueJs(14)---理解Vuex

    理解Vuex 一.Vuex 是什么? 首先我们来分析一种实际开发中用vue.js的场景,你有n个组件,当你改变一个组件数据的时候需要同时改变其它n个组件的数据,那么我想你可能会对 vue 组件之间的通 ...

  8. C++版 - LeetCode 145: Binary Tree Postorder Traversal(二叉树的后序遍历,迭代法)

    145. Binary Tree Postorder Traversal Total Submissions: 271797 Difficulty: Hard 提交网址: https://leetco ...

  9. 使用redis进行基于shiro的session集群共享

    之前写过一篇nginx多tomcat负载均衡,主要记录了使用nginx对多个tomcat 进行负载均衡,其实进行负载均衡之前还有一个问题没有解决,那就是集群间的session共享,不然用户在登录网站之 ...

  10. apache用户认证访问机制(转)

    Apache服务器已经内置用户验证机制,大家只要适当的加以设置,便可以控制网站的某些部分要用户验证.前期准备,必须已经安装apache,如果还没安装,或者对安装很模糊的话,第1步:我们在/var/ww ...