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


出品丨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实用技巧,扫描下图二维码!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值