• VS2017 docker部署工具的使用


    **简要描述:**

    - 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"将镜像拉取到,并运行,就可以访问了.

  • 相关阅读:
    centos6 LVS-DR模式---分析
    centos6.6 安装 LXC
    Amoeba-mysql读写分离实战
    keepalived +mysql 实战
    nginx添加sticky模块-cookie保持会话
    haproxy转发真实IP给web
    Mysql-如何正确的使用索引以及索引的原理
    Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
    Mysql-常用数据的基本操作和基本形式
    Mysql-多表连接的操作和用法
  • 原文地址:https://www.cnblogs.com/xuebuwan/p/8707187.html
Copyright © 2020-2023  润新知