2017微软拥抱容器技术历程回顾,手把手带您构建原生的Windows 容器

转载 2017年12月29日 00:00:00


出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分  与您不见不散


说在前面


在2017年即将结束的时候,我们选出了读者们最喜欢的五篇文章。对于那些还没有在Windows上构建过Docker容器的朋友,我将为您推荐这篇可以帮助您在Windows上快速构建并且运行Docker容器的教程。


早些时候,微软宣布Windows Server 2016将会普及,以便可以在Windows上使用原生的Docker引擎运行容器。本文将详细介绍如何在Windows 10上运行Docker Windows Containers或使用Windows Server 2016 VM。在开始之前,您首先需要准备一个支持构建、运行Docker容器的Windows系统。



Windows 10周年纪念版更新


对于开发人员来说,Windows 10系统是运行Docker Windows容器的好地方,随着周年纪念版的更新,Windows 10 核心将添加对容器化的支持(它所缺少的仅仅是Windows原生的Docker引擎和一些镜像的基础层)。


在Windows上获取Docker引擎最简单的方法就是安装Docker for Windows。Docker for Windows过去仅设置了基于Linux的Docker开发环境,但现在它可以同时为Linux和Windows设置Docker开发环境。一旦安装完毕,Docker for Windows图标就可以在Linux和Windows容器之间进行切换了。



切换到Windows容器,进入下一节内容。


Windows Server 2016


Windows Server 2016就是要将Docker Windows容器部署到生产环境。对于那些计划开发大量Docker Windows容器的开发者来说,在Windows 10和Docker for Windows完美支持Windows容器之前,建立一个Windows Server 2016开发系统(例如在一个虚拟机上)是一件相当值得做的事情。下载一个免费版本,并将其安装在裸机上或那些运行Hyper-V、VirtualBox或拥有类似虚拟化技术的虚拟机上。使用Windows Server 2016运行虚拟机也是在macOS和较旧的Windows版本上运行Docker Windows容器开发的好方法。


一旦启动、登录并运行Windows Server 2016,Windows将提示您进行更新,更新后将直接为您安装Windows原生的Docker引擎(就是不再使用“Docker for Windows”了),在PowerShell中输入以下命令:


Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force

Install-Module -Name DockerMsftProvider -Force

Install-Package -Name docker -ProviderName DockerMsftProvider -Force

Restart-Computer -Force


Docker引擎正在以Windows service的形式运行,监听默认的Docker命名管道。

 

# Open firewall port 2375

netsh advfirewall firewall add rule name="docker engine" dir=in action=allow protocol=TCP localport=2375

# Configure Docker daemon to listen on both pipe and TCP (replaces docker --register-service invocation above)

Stop-Service docker

dockerd --unregister-service

dockerd -H npipe:// -H 0.0.0.0:2375 --register-service

Start-Service docker


现在可以通过设置DOCKER_HOST从虚拟机中使用Windows Server 2016 的Docker引擎了:


$env:DOCKER_HOST = "<ip-address-of-vm>:2375"



运行Windows容器


首先,确保您的Docker正在运行中:


> docker version

Client:

Version:      1.12.1

API version:  1.24

Go version:   go1.6.3

Git commit:   23cf638

Built:        Thu Aug 18 17:32:24 2016

OS/Arch:      windows/amd64

Experimental: true

 

Server:

Version:      1.12.2-cs2-ws-beta

API version:  1.25

Go version:   go1.7.1

Git commit:   62d9ff9

Built:        Fri Sep 23 20:50:29 2016

OS/Arch:      windows/amd64


接下来,下载一个与评估构建兼容的基础镜像,重新标记它并进行测试运行:


docker pull microsoft/windowsservercore

docker run microsoft/windowsservercore hostname

69c7de26ea48



构建和上传Windows容器镜像


将镜像推送到Docker Cloud需要一个Docker ID。在Docker Cloud上存储镜像是一种很好的习惯,可以为以后的用户保存构建,与同事共享基础镜像,或者创建构建管道通过Docker将应用程序从开发移植到生产。


Docker镜像通常是通过Dockerfile中的docker build来构建的,但是在这个示例中,我们将在PowerShell中实时创建一个镜像。


"FROM microsoft/windowsservercore `n CMD echo Hello World!" | docker build -t <docker-id>/windows-test-image 


测试镜像:


docker run <docker-id>/windows-test-image

Hello World!


用docker login登录,然后上传镜像:


docker push <docker-id>/windows-test-image


储存在公共镜像库中的镜像可以被其他Docker用户下载使用。


在Windows上使用docker-compose


Docker Compose是开发多容器(由数据库、队列和Web前端组合的复杂容器)的好方式。


要在Windows Server 2016系统上使用Docker Compose进行开发,就需要安装Windows Server 2016(而在安装了Docker for Windows的Windows 10中则不需要再安装它了):


Invoke-WebRequest https://dl.bintray.com/docker-compose/master/docker-compose-Windows-x86_64.exe -UseBasicParsing -OutFile $env:ProgramFiles\docker\docker-compose.exe


在Windows上试用Compose,请先克隆由SQL Server Express 2016数据库支持的ASP.NET Core MVC MusicStore应用程序的变量。在开始前,一个拥有正确标签的 microsoft/windowsservercore 镜像是必不可少的。


git clone https://github.com/friism/Musicstore

...

cd Musicstore

docker-compose -f .\docker-compose.windows.yml build

...

docker-compose -f .\docker-compose.windows.yml up

...


要从运行容器的主机上访问正在运行的应用程序(例如,在Windows 10上运行时,或者在运行Docker引擎的Windows Server 2016系统上打开浏览器),请使用容器IP和端口5000:


docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" musicstore_web_1

172.21.124.54

如果使用Windows Server 2016并从VM或主机外部访问,则只需使用VM或主机IP和端口5000即可。


总结


本文描述了如何在Windows 10和Windows Server 2016上构建和运行原生的Docker Windows Containers。要查看更多详情可以点击下列标题:



如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!


相关文章推荐

十年MFC经历认识的Microsoft技术

原文地址:http://blog.csdn.net/sunhui/article/details/319551         自从2005年3月8日下午16时“十年MFC经历认识的Microso...
  • chenlycly
  • chenlycly
  • 2015-01-12 21:24
  • 1716

30个不可不知的容器技术工具和资源

软件容器技术影响着从开发人员、测试人员、运维人员到分析人员的IT团队中的每一个人,它不像虚拟化一样只是系统管理员的工具。容器包的大小和完整性使得团队成员能够在几秒钟内部署完整的环境。容器是一个很好的工...
  • RancherLabs
  • RancherLabs
  • 2017-02-22 13:28
  • 1453

Docker学习笔记(一)基本原理及概念

1.基本概念 Docker是基于Go语言实现的云开源项目。Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运...
  • u012299594
  • u012299594
  • 2016-08-28 10:06
  • 9220

微软WPF技术应用与实践系列(窗体与导航+容器+模型+数据绑定配多个应用案例

  • 2017-04-27 13:07
  • 169B
  • 下载

【云快讯】之二十五《微软将在Windows Server中支持“Docker”容器》

Docker很火,但是一直无法对Windows上很好的兼容。那么现在微软也推出了自己的容器技术和解决方案。当然,微软的容器并非此Docker。
  • asnowstar
  • asnowstar
  • 2015-04-09 19:35
  • 512

从 Windows 8 回顾微软平台的各种技术

摘要:我安装好Win8 CTP后做的第一件事情就是用调试器研究Win8各个组件的协作关系。从我半天的研究结果看来,Win8真是一个让我爱不释手的产品。Win8里面涉及到的很多...... ...
  • code329859664
  • code329859664
  • 2012-08-03 21:04
  • 372

基于微软Unity的IoC容器(DI)实现

using System; using System.Linq; using Microsoft.Practices.Unity; namespace Container { public ...
  • hzy19860111
  • hzy19860111
  • 2014-07-05 17:33
  • 722

从Visual Studio 2017谈起,解析微软技术生态进化之道

作者|何恺铎   编辑|尾尾   曾经被业界取笑「闭关锁国」的微软如今也走向了「改革开放」的道路,Visual Studio 2017的发布,不仅是VS二十周年的大事件,更是微软技术生态焕...
  • mandagod
  • mandagod
  • 2017-03-28 10:02
  • 182

年度重磅:2017微软技术暨生态大会将于10月23日北京召开!

本次大会将于10月23日北京召开,2017微软技术暨生态大会报名平台活动家。这是微软中国年度最盛大的科技峰会;这是微软技术大会与合作伙伴大会的首次联袂;这也是聚集众多IT大咖的技术狂欢派对!
  • huodongjia2016
  • huodongjia2016
  • 2017-07-10 18:17
  • 1248

2017微软探星夏令营在线技术笔试

好久没在csdn上写东西了。 1534 : Array Partition 求一个前缀和,然后用map维护一下就好了。 1535 : MSFT 这题...
  • u010697167
  • u010697167
  • 2017-07-20 18:55
  • 347
[startrelatedarticlesad1]

{relatedtitle}

{relateddes}
[endrelatedarticlesad1] [startrelatedarticlesad2] [endrelatedarticlesad2]
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)