1. 程式人生 > >2017微軟擁抱容器技術歷程回顧,手把手帶您構建原生的Windows 容器

2017微軟擁抱容器技術歷程回顧,手把手帶您構建原生的Windows 容器

640?wx_fmt=png&wxfrom=5&wx_lazy=1

出品丨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系統。

0?wx_fmt=png

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容器之間進行切換了。

0?wx_fmt=png

切換到Windows容器,進入下一節內容。

0?wx_fmt=png

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"

0?wx_fmt=png

執行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

0?wx_fmt=png

構建和上傳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使用者下載使用。

0?wx_fmt=png

在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即可。

0?wx_fmt=png

總結

本文描述瞭如何在Windows 10和Windows Server 2016上構建和執行原生的Docker Windows Containers。要檢視更多詳情可以點選下列標題:

如果本文對你有幫助,歡迎分享到朋友圈!獲取更多Docker實用技巧,掃描下圖二維碼!

0?wx_fmt=png