《創建Windows 2016 TP5 Docker本地虛擬機》要點:
本文介紹了創建Windows 2016 TP5 Docker本地虛擬機,希望對您有用。如果有疑問,可以聯系我們。
繼Windows 2016 TP5上的Docker初次體驗之后,作者接著寫了這篇創建本地虛擬機的文章,給出了Packer和Vagrant的用法,并詳細說明了Packer的功能.
越來越多的人開始試用Windows Docker容器,這太棒了.無論是想了解Windows上所運行的Docker引擎的當前狀態,還是想親身體驗一下Windows容器來,最新的Windows Server 2016 Technical Preview 5都是一個很好的起點.
不久就會有很容易上手的微軟Azure模板.一旦這個補丁被合并,就意味著用戶可以很容易地在Azure上創建Docker Machine.
目前而言,創建本地的VM還是需要花費一點時間和精力的.有一些不錯的教程可以指導你完成必要步驟.
如果你不想全部采用手工方式完成創建工作,在你的計算機面前等待下一步操作提示,你也可以用Packer和Vagrant.
Packer使用ISO文件作為輸入,制作用于Vagrant環境的基本虛擬機.使用Vagrant,你可以啟動一個或者多個這樣的虛擬機,甚至可以形成一個Windows Docker Swarm集群.
本文所使用的Packer模板可以用來創建含有Docker Engine的Windows 2016 TP5 虛擬機.這個模板已經用VirtualBox 5.0.20 和 VMware Fusion 8.1測試過.如果你用的是Windows系統,模板應該也可以在 VMware Workstation上使用.
使用Packer 0.10.0創建Vagrant基本虛擬機,只需要克隆下面的GitHub repo(https://github.com/StefanScherer/packer-windows).
git?clone?https://github.com/StefanScherer/packer-windows?? cd?packer-windows
然后為VMware創建Vagrant基本虛擬機:
packer?build?--only=vmware-iso?windows_2016_docker.json
或者為VirtualBox創建Vagrant基本虛擬機:
packer?build?--only=virtualbox-iso?windows_2016_docker.json
這個過程大概要花上一個小時.
上述步驟完成之后,當前路徑中應該就會有一個box文件.將該文件添加到Vagrant:
vagrant?box?add?windows_2016_tp5_docker?windows_2016_docker_vmware.box
如果你既有VirtualBox環境,也有VMware環境,你也可以為這兩種環境分別創建和添加基本虛擬機.你可以列出所有的base box:
$?vagrant?box?list windows_2016_tp5_docker?(virtualbox,?0)?? windows_2016_tp5_docker?(vmware_desktop,?0)
現在你可以使用新的基本虛擬機來執行一些測試工作了.這里,我們需要訪問另一個GitHub repo(https://github.com/StefanScherer/docker-windows-box).第一步是克隆代碼:
git?clone?https://github.com/StefanScherer/docker-windows-box?? cd?docker-windows-box
使用Vagrant 1.8.1,可以很容易地啟動虛擬機,并讓Docker在Windows 2016 TP5上運行:
vagrant?up
Vagrant啟動VM,安裝其它的Docker工具(如Machine和Compose).同時也安裝Git以便訪問一些在Github(https://github.com/brogersyh/Dockerfiles-for-windows)上的Windows Dockerfile.
你可以打開PowerShell來執行一些命令,例如:
docker?version?? docker?images
恭喜你!你現在可以用Windows 2016 TP5上的全新Docker引擎開始工作了!
如果你想了解Packer在自動創建虛擬機的過程中做了什么,下面列出了Packer所運行的一些部署腳本.
在腳本文件enable-winrm.ps1中,在打開WinRM端口讓Packer登錄和進行進一步準備之前,將啟用一些Windows配置,如Container支持和Hyper-V(僅針對VMware)支持.
下一個腳本install-docker.ps1,用來安裝Docker服務、Docker客戶端和名為windowsservercore的Docker基礎鏡像.如果Hyper-V已啟用,也會安裝名為nanoserver的Docker基礎鏡像 .
因為TP5和相關的文件以及鏡像很新,并且還是預發布版本,保不定哪兒還有點問題.
目前我們需要這個腳本來為windowsservercore Docker鏡像提速.腳本patch-boot-time-for-containers.ps1就是用來處理這個問題的.
在本地的測試環境,我們用腳本enable-docker-insecure.ps1打開不安全的Docker端口2375.
你可以從運行該虛擬機的主機上遠程控制Windows Docker引擎.平時使用Linux或者Mac的人更該嘗試一下.
一旦將來有了本地Windows VM的Docker Machine驅動程序,我更傾向于使用它來建立安全的TLS連接.
新的Windows Docker引擎會在一個Windows命名管道上監聽消息,這與在Linux系統上監聽 Unix套接字很相似.
普通用戶不能訪問這一命名管道,所以需要使用管理員Shell來操控Docker引擎.
腳本add-docker-group.ps1將選項-G docker添加到Docker引擎的啟動命令,這樣Windows用戶組docker里的所有成員就都具有了訪問命名管道的權限.
該腳本還在用戶vagrant添加到這個docker用戶組.所以,在Vagrant虛擬機中你就可以打開一個普通的PowerShell窗口來操控Docker引擎了.
最后一個腳本remove-docker-key-json.ps1負責刪除初始安裝的key.json文件.在第一次啟動運行Docker引擎時,每個Vagrant虛擬機中都會創建這個文件,并且根據不同Docker引擎創建不同的ID.
如果你想要構建一個Windows Docker Swarm集群,記得每個Docker引擎都需要一個不同的ID.
由于Docker基礎鏡像和Docker引擎會持續更新,用Packer和Vagrant自動重建基本虛擬機就簡單多了,不再需要執行那些手工操作的步驟.
如果這篇文章對你有用,請分享給朋友和同事.如果你有問題或更好的建議,請留下評論.你還可以在推特@stefscherer(https://twitter.com/stefscherer)關注我.
感謝滕啟明對文章的審校.
馬遠征?譯
英文鏈接:https://stefanscherer.github.io/setup-local-windows-2016-tp5-docker-vm/#rd
原文出處:Docker微信公眾號
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4507.html