IBM Bluemix體驗:Containers


國際版的Bluemix目前有三個region,US South,United Kingdom和Sydney。其中US South是功能最全的,UK其次,Sydney功能最少。Containers服務在US和UK兩個region中都可以使用。

為了減少不必要的麻煩,我使用了一個在國外的安裝了Ubuntu 16.04操作系統的虛擬機作為客戶端,如果你想體驗一把國內pull/push docker鏡像的酸爽,同時還想測試一下在Windows 10自帶的Linux環境中運行docker的話,那么可以放心大膽的在運行Windows 10的計算機上體驗Bluemix的Containers服務。

經過實際測試,在國內訪問US South的速度比UK好很多,因此這里我使用US South region來進行實驗。總體來說,Bluemix的文檔質量還是很高的,基本上沒有什么錯誤。當然,現在看起來還只有英文版。

Bluemix的Containers可以使用三個來源的docker images:IBM Public,Docker Hub和自己制作的鏡像。IBM Public的鏡像現在還很少,只有可憐的3個。

如果要使用Docker Hub的image和上傳自己的image,需要在客戶端安裝Bluemix CLI,Cloud Foundry CLI和ibm-containers插件。當然docker也是必須要在客戶端安裝的。看上去有些復雜...

Docker的安裝比較簡單,按照官方文檔操作就可以完成。注意不同的Ubuntu版本操作略有不同。安裝完成后,驗證一下docker安裝是否正常。

docker run hello-world

這里下載Bluemix CLI,根據頁面上的說明解壓並執行安裝命令。

wget http://public.dhe.ibm.com/cloud/bluemix/cli/bluemix-cli/Bluemix_CLI_0.4.1_amd64.tar.gz

tar -xvf Bluemix_CLI_0.4.1_amd64.tar.gz 

cd Bluemix_CLI/

sudo ./install_bluemix_cli 

Github下載Cloud Foundry的CLI。下載Debian 64位的Installers,不要下載Binaries。

wget https://s3.amazonaws.com/go-cli/releases/v6.21.1/cf-cli-installer_6.21.1_x86-64.deb

sudo dpkg -i cf-cli-installer_6.21.1_x86-64.deb

安裝完成后,執行“cf --help”應該正確顯示cf的幫助說明。

安裝ibm-containers插件,這是一個Cloud Foundry CLI的插件。

cf install-plugin https://static-ice.ng.bluemix.net/ibm-containers-linux_x64

安裝完成后,執行“cf plugins”驗證ibm-containers插件是否安裝成功。

接下來我們在本地創建一個docker鏡像,以下是Dockerfile示例(鏡像中的內容僅供演示參考,實際操作時請用自己的鏡像替代):

FROM ubuntu:goproxy-v1
EXPOSE 9443
CMD ["/root/goproxy","-config","/root/config.json"]

這個鏡像比較簡單,執行“/root/goproxy”並傳遞2個參數:"-config"和"/root/config.json"。確保相應的文件已經copy到base鏡像(ubuntu:goproxy-v1)中。把host上的文件copy到鏡像中可以使用:“sudo docker cp”命令(使用sudo執行)。

構建鏡像(注意命令行最后是個“.”)

docker build -t ubuntu:goproxy-v2 .

鏡像構建完成后,在本地測試鏡像是否能正常運行

docker run -p 9443:9443 ubuntu:goproxy-v2

鏡像構建成功后,我們將本地構建的鏡像push到私有庫中。Bluemix Containers為用戶在每個region各提供一個私有的docker repository。

登錄到Bluemix,注意“-a”參數,這個用來指定api的endpoint,每個region的endpoint都是不一樣的。

cf login -a api.ng.bluemix.net

輸入用戶名和密碼登錄,然后根據提示選擇一個space:

使用ibm-containers插件登錄到Containers服務(這個命令需要使用sudo執行,否則執行命令后沒有任何反應就退出了):

sudo cf ic login

登錄成功后出現以下提示:

將上圖中3條黃色標記的命令依次復制並執行一遍,用於設置使用本地的docker客戶端操作Bluemix Containers服務。每次登陸都要這樣執行一次,的確有點煩...

如果是首次登錄Containers服務,需要在當前region為Containers服務設置一個namespace,注意這個namespace不是前文中登錄Bluemix選擇的space。

# “htcn-us-south-1”是namespace的名稱。
# 記住namespace名稱,后續步驟會用到。
sudo cf ic namespace set htcn-us-south-1

設置完成后,本地的docker客戶端就可以操作Bluemix的Containers服務了。

給本地的docker鏡像打標簽:

docker tag ubuntu:goproxy-v2 registry.ng.bluemix.net/htcn_us_south_1/ubuntu:goproxy-v2

這個命令看起來有些復雜:

  • “ubuntu:goproxy-v2”是本地鏡像名稱和標簽
  • “registry.ng.bluemix.net/htcn_us_south_1/ubuntu:goproxy-v2”是遠程repository的名稱和標簽
    • 遠程repository的名稱和標簽格式為:[Bluemix region URL]/[Containers的namespace]/[鏡像名稱]:[鏡像標簽]

如果已經熟悉並使用過其他的docker服務(CaaS),這個理解起來並不復雜。

推送本地鏡像到Containers服務的私有repository中:

sudo docker push registry.ng.bluemix.net/htcn_us_south_1/ubuntu:goproxy-v2

登錄到Bluemix的web控制台,選擇region后進入Containers服務,在新建container頁面中可以看到剛才上傳的image。

選擇這個image,開始創建container。

按提示輸入container的名稱,選擇container的大小,指定公網IP地址。然后點擊“Create”按鈕開始創建container。

運行中的container:

總體來說IBM Bluemix Containers服務的使用過程還是很流暢的,CLI和web控制台操作起來都比較容易上手。文檔完整清晰,沒有明顯的差錯。如果要說缺點的話,那就是在國內的訪問速度的確不咋地(但這個也是並非IBM能力范圍內可以快速解決的問題)。期待由世紀互聯運營的IBM Bluemix中文公眾版盡快上線吧!

最后提醒一個“小坑”,Containers服務目前只能對外開放:22,80,443,9080,9443幾個端口,詳細信息請參考這里

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM