设为首页 收藏本站
查看: 1627|回复: 0

[经验分享] Visual Studio 2017 调试 windows server 2016 Docker Container

[复制链接]

尚未签到

发表于 2017-6-21 20:50:42 | 显示全部楼层 |阅读模式
  网上很多文章都是在win10下,用Docker for windows工具进行Docker的安装部署的。用知道windows server 2016已经原生支持Docker了,其windows Container已经和Linux下的内核技术是一致的了,况且最重要的原因就是Docker容器的部署肯定是在Windows server 上面的。所以何不尝个鲜,直接用windows server 2016上装个visual studio 2017来进行开发呢。
  一、Windows Server 2016安装Docker
  在windows server 2016上面安装Docker十分的简单,不需要像win10一样,装个Dokcer for windows工具,也不需要开启Hyper-V建个Linux虚拟机了。直接在Shell命令下面运行如下命令:



Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider
Restart-Computer -Force
  可以参考 Windows Containers on Windows Server
  重启完电脑,运行docker version会弹出如下界面,说明Docker已经安装完成
DSC0000.png

  二、在ASP.NET Web Application项目上启用Docker的支持(注意不是.net core应用)
  使用Visual Studio 2017新建一个ASP.NET Web Application项目
DSC0001.png

  在模板上随便选一个,这里不像.net core程序会有直接的Enable Docker Support的选项
DSC0002.png

  没关系,我们可以直接在项目右键vs2017-》Add-》Docker Support
DSC0003.png

  就会多出如下文件
DSC0004.png

  基本上都是docker-compose和Dockerfile构建Docker容器用的。
  三、启用Docker调试
  如果这时按F5进行选择Docker进行调试,会出错,主要是docker-compose命令未找到。在Docker官网上找到了如下的说法:

  Docker for Mac, Docker for Windows, and Docker Toolbox include Docker Compose, so most Mac and Windows users do not need to install Docker Compose separately.
  If you are running the Docker daemon and client directly on Microsoft Windows Server 2016 (with Docker EE for Windows Server 2016), you do need to install Docker Compose.
  To do this, start an “elevated” PowerShell (run it as administrator). Search for PowerShell, right-click, and choose Run as administrator. When asked if you want to allow this app to make changes to your device, click Yes.
  Run the following command to download Docker Compose, replacing $dockerComposeVersion with the specific version of Compose you want to use:

Invoke-WebRequest "https://github.com/docker/compose/releases/download/$dockerComposeVersion/docker-compose-Windows-x86_64.exe" -UseBasicParsing
-OutFile $Env:ProgramFiles\docker\docker-compose.exe

  For example, to download Compose version 1.12.0, the command is:
  none Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.12.0/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\docker\docker-compose.exe
  Now, run the executable to install Compose.

  参考: Install Docker Compose,我们先找一下docker-compose的最新版本https://github.com/docker/compose/releases,发现是1.13.0,那么那句话可以直接改为



Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.13.0/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\docker\docker-compose.exe
  满心期待的去运行F5,结果还是报错:



ERROR: client version 1.22 is too old. Minimum supported API version is 1.24, please upgrade your client to a newer version
  查了一下,原来如果你使用Docker 1.13以上版本,需要将docker-compose.yml中的version: '2'修改为version: '2.1'也就是这里的version
DSC0005.png

  真的是一波三折,总算是没问题了,编译也能通过了。可是当调试F5的时候,却偏偏又出现远程调试错误。。。
DSC0006.png

  这个时候,运行docker ps的命令,可以看到我们的容器已经启动了
DSC0007.png

  我们查看一下容器IP



docker inspect --format="{{.NetworkSettings.Networks.nat.IPAddress}}" $CONTAINER_ID
  然后直接在游览器中访问,已经可以看到网站在运行了。
DSC0008.png

  这个真的是蛮坑的地方,网上也没有相关资料,倒是在stackoverflow发现相关问题:Running Visual Studio Remote Debugger in Windows Container (Docker managed),但是没什么用。最后想了半天,原来是server版的限制比较高,必须在防火墙中开发端口,或者直接关掉防火墙,就OK了。
  参考:
  BUILD AND RUN YOUR FIRST DOCKER WINDOWS SERVER CONTAINER
Docker的Windows容器初体验
  Docker容器环境下ASP.NET Core Web API应用程序的调试

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-386538-1-1.html 上篇帖子: TCP/IP参考模型 下篇帖子: [补] winpcap编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表