VMware VIC(vSphere Integrated Containers)具有很多吸引用戶的賣點,但是使用Docker容器運行微服務demo應用并不是其中一項。
VMware VIC希望幫助企業無縫遷移到容器化應用程序,但是諸多限制使得在vSphere中運行容器變得非常困難。 VSphere VIC允許用戶將容器加入到當前基于虛擬機的應用程序中。基于容器的應用程序可以和傳統應用程序一樣,在虛擬機的方式運行。開發人員使用Docker命令,而運維人員使用vSphere。在之前文章中,我曾經提及使用VIC 部署VCH(虛擬容器主機)非常簡單,以及如何在容器中使用Docker命令部署web服務器。我還展示過如何添加圖形管理工具來管理容器和和容器鏡像。
在本文中,最初我想要展示由多個容器組成的復雜應用程序,但是在Docker容器和VMware VIC方面遇到了一些復雜問題。
VMware VIC缺少Docker容器支持
我要展示的第一個實例是投票應用;這是Docker的簡單應用之一,你可以在GitHub上找到相關項目。我在自己的Mac筆記本上安裝了Dcoker,這也是大多數開發人員所采用的方式。為了啟動投票應用,我從GitHub上克隆了該項目,之后在下載文件夾中使用”docker-compose up -d”命令運行。Docker Compose讀取配置文件,創建五個容器鏡像,之后啟動五個容器。整個過程花費了幾分鐘時間。之后,我們需要在貓和狗之間進行選擇——如下圖所示,我選擇了貓。
圖A. Docker簡單投票程序
在Windows系統上,我們同樣可以使用Docker Toolbox實現這個過程,因此開發人員不論使用Mac還是Windows,都可以獲得相同的體驗。
但是我在這個應用遷移到生產環境的過程中遇到了一些問題。VMware VIC并不支持創建Docker鏡像,因此Docker Compose會立刻提示失敗信息,原因是VIC沒有創建鏡像。我猜想VMware不支持創建鏡像是因為企業級用戶擁有自己的容器注冊表,將創建容器鏡像作為CI/CD(持續集成/持續部署)過程的一部分。
VMware VIC關于如何在VIC中創建投票應用的文檔告訴用戶需要首先在其他機器上創建容器鏡像,之后上傳到repository中。我嘗試遵循這些步驟,但是最終也無法在VIC中創建正常工作的投票應用;許多容器在剛剛啟動之后就立刻崩潰。因此這并不是在VIC中展示多容器應用的很好示例。
VIC在file mapping時遇到麻煩在Google簡單搜索之后我決定嘗試另外一個demo應用,這是由Weaveworks提供的web商店demo應用。這款應用使用從Docker Hub——Docker的公開鏡像repository——直接下載容器鏡像。我只需要在電腦上配置docker-compose.yml文件,之后執行docker-compose up –d命令就可以啟動應用程序了。這一次,大約需要下載15個容器鏡像,因此需要花費更長的時間。所有容器啟動之后,就能看到一個銷售襪子的圖形化web商店了。
Weaveworks web商店demo應用
投票和web商店這兩個應用程序在我的Mac和Windows電腦上都能夠正常工作,但是VIC卻不行。這一次是因為開發人員使用file mapping功能從Docker主機獲取信息到其中一個容器。VIC不支持本地映射,并且其不是Linux機器,因此并沒有標準的Linux文件。開發人員誤認為用戶會使用Liunx容器主機。這是將代碼從開發環境遷移到生產環境的一個典型問題——也是一個容器被忽略的問題。
總而言之,今天嘗試在VIC中運行微服務demo應用的過程中我學到了哪些呢?最顯而易見的就是這是一種復雜技術:容器并不是將應用程序快速部署到生產環境的理想方式,并且VIC并不能提供Docker在我筆記本上的全部功能,相信其他開發人員也一樣。因此開發人員肯定會使用一些其他方式讓運維工作變得更加困難,因為他們關注的只是編碼。從積極的角度來看,我掌握了如何部署VCH使用證書和設定環境變量,以及如何不在Docker命令行中進行指定的情況下使用VCH和證書。VMware并沒有提供提供我想要的全部功能,這讓我有些失望。我仍然熱衷于使用應用程序運行容器,但是同時十分確定開發人員才是在生產環境中部署良好應用程序的關鍵。