【IT Infra 線 01】微軟容器家族大解密 - ACI

那大家又是我 我是Perl就是專業跑龍套的工程師今天我很開心要來跟各位分享一下微軟容器家族大揭秘的第一單元也就是介紹ACI那這個ace其實今天的時間有限所以我就不廢話這麼多其實主要這個ACI他全名叫什麼叫Azure Container Instances他要做什麼事情呢其實我相信大家對於在想要熟悉Docker、Container這件事情的時候大家都會在網絡上看到很多文章很多教學文件很多專業的大神都寫得非常詳細圖文並茂但大家都會有個心裏面都有共同的陰影就是說如果一開始我本來我本身進入這個業界就是用
Windows那是不是我在這件事情上面我要先熟悉很多Linux的語法然後熟悉很多怎麼去建立這些東西然後怎麼去建ROS然後才能一步一步的堆疊起來我才開始體驗建立Container對樂趣那今天呢其實比較不一樣的就是我們就透過Azure Container Instances第一堂課 101讓各位見識到說我要怎樣就可以用簡單幾個指令去建好自己的Container這個你們可以想像一件事你們在一般的書籍上面看到說你要先把所有東西都先做好Docker
Engine、Docker Host這個動作全部都用Azure來幫你完成了那所以你們只要把你們的image建立好之後放到一個倉庫這個倉庫任何地方都可以啊再來就是把倉庫拉到Azure這個平台上告訴說我要在這邊跑Container至於這個底下怎麼做都不用擔心很簡單的一句話ACI就是把你Container的運行在Azure上一句話就解決了那當然不會這樣子就這麼簡單的所以呢其實他這邊有一些Container Instances做法例如說他可以去做你們可以去看裏面的CPU or
memory還有這樣一個非常非常重要的重點以往大家都覺得說這種東西都是Open Sources都是Linux Base的那Windows雖然我們的Win Server設備也慢慢開始支援Windows
Server Comtainer Server 了他到底支不支援?
到底要怎麼做?到底又有什麼差別呢?所以 Container
Instances 其實是這個 Container、image是做成Linux base還是windows
base,我們都沒有差跑在這個平台上我們通通都可以讓你去作運行所以完全不去管運行的時間,我要去建立版本的問題在這邊都可以幫你解決最大最大的重點是你們可以不用去花太多的力氣跟時間一開始就先來體驗一下我在建立Container的時候動作甚至我還要做一些其他的測試來看他是不是真的可以如我所想可以快速建立起來啊快速來做做應用好其實話不多說哦那我們就簡單來帶各位來看看幾個demo好那所以大家可以跟着我來看一下我的畫面好那所以大家可以跟着我來看一下我的畫面進來之後看到這些是我們Azure的一個portal這邊我在上面特別多點了一個command line這邊可以直接就看到我們的Azure的指令集這個command line有個好處就是以前我們大家都覺得說這樣敲指令的時候啊我還要通過一個指定視窗或者是Power Shell這些才讓我來做這件事情現在現在可以直接在這個Azure的portal直接就從Azure這種雙視窗來做點事回到今天的重點今天其實想跟各位介紹容器執行個體這個服務容器執行個體這個服務所以大家可以在旁邊先找到容器執行個體就是今天我們主要想給各位看到重點的一個方向在開始建立之前先給大家看幾個今天會用到的指令會用到指令我都已經在先幫各位編輯好了那後續我們也可以看得見第一個呢其實一樣我們要先做個要先follow國際禮儀我們要先做個要先follow國際禮儀我們要先有一個所謂的Hello
World基本的國際禮儀好那所以第一個就先來這邊build那其實這個語法很簡單大家看到az就是我剛剛在這邊敲語法最基本的一個起手式那CLI的起手式再來就是我們給他Container Create就是給他一個命令字元告訴他說我們要開一個Container叫什麼名字呢你們可以自己訂像我這邊就是第一個叫acihelloworld那再來另外一個image這image很重要各位要知道這image是從哪裏拿出來這image其實有幾個方向第一個你可以從docker hub的地方那我等一下demo的東西大部分都是從image上拿下來的那另外一個你們也可以build在一個自己own的倉庫裏面不管是任何友商的網絡空間啊或者說我們自己的ACR都可以那我們都可以做這件事情再來也是一樣在Azure上面建服務雲你一定要給他一個所謂的resource group這是一定要給他一個家那再來最後就是你要告訴他我的IP是要對外人還是要私用的那我這個機器的IP的機器是要私有還是要對外都可以但他也可以這樣私有的整合所以這個指令其實就是要用這種方式才去做組成所以還蠻簡單的所以我們來看一下今天第一個我只要簡單的去敲這個指令各位可能覺得說這樣的畫面太小了這樣一上一下有點擁擠所以沒關係我等下還有另外一個更清楚的頁面所以我們就把剛剛打好指令複製在這邊那如果你要自己敲也可以按下enter你會發現其實他就開始去跑的動作像這樣子的一個很簡單的一個這樣子的Container
Instances一個動作行為那各位要記得一件事情哦在我build這個Container Instances要花多少時間剛從簡報上看到的第一句話會告訴你們說其實他可能只要簡短的幾分鐘幾秒鐘之內就會完成為什麼我剛剛在這方面有特別highline這件事情其實是因為這個實際上是一個蠻客觀不一樣的形容為什麼會這樣講是因為其實這個所需要去build所花的時間會根據各位你們在build image的大小來決定說我要先要花多長時間舉個例子給各位看像今天我今天build的一個hello world的command一個Container
Instances花的時間就很快為什麼因為他的image 小小的不大那其實在這邊build完之後我們可以來看一下他這邊有沒有把他的public IP給我如果有的話那我們這邊他80port已經開起來了我們把他丟到旁邊一個頁面去80開起來了那除了80開起來之外他有沒有把public IP給我這邊有個public
IP這個位置的IP其實他就已經開起來了包含這個位置還可以之外其他的IP是放在哪一個data center他這邊也會一定讓你知道那我把IP複製下來要怎麼去驗證這件事情其實都會先跟各位講一件事情其實都會先跟各位講一件事情我們把他拉到Azure的平台上展開來我們的機器開機需要一段時間所以我們先來看一下這個IP是不是真的已經有東西出來了其實他可能還在跑因為你們看他這個IP還正在運行中其實我們在這裏等一下他這邊就會有他IP出來了打開來了一個hello world哦歡迎大家進到Container Instances的境界那各位想知道說他到底在build的時候會花多長時間那整個image
build起來那差別會在哪裏我幫各位做幾個範例舉例來說我們到docker上這是一個免費的公開空間是由docker來own的上面有很多你們只要去輸入Microsoft開頭去找我們官方所放上去的這個image的話你們就可以從上面去build出你們想要的image舉個例子來說我們今天如果想要Build Mssql server on
Linux甚至像上次我想跟各位介紹cntk最近AI這麼夯,那微軟也有自己的cntk的工具Build在container Instances上做使用也可以那build cntk image的容量比較大的時候他可能就花稍微多一點時間給各位看在build
cntk image會花多少時間各位我幫你們準備好第二個指令其實你會發現這個指令跟他有什麼差別除了第一個container Instances不一樣之外第二點就是我給他image位置不一樣其他的都一模一樣我給他一個public IP我會習慣把放在相同的resource
group如果你們要換這邊可以稍微換一下這邊都選擇好之後我們就可以直接把他build起來這邊都選擇好之後我們就可以直接把他build起來所以我來這邊這個頁面上全版頁面看起來會比較快一點在我開始貼之前按enter之前大家先看一下我目前這邊只有兩個container我目前這邊只有兩個container一個是我剛build的perlcontainer一個是acihelloworld剛剛最後的這一個我們先來看一下當我們按下去enter之後他這邊就開始跑了你會發現一件事情是其實剛剛我在整個在這個helloworld的時間很快他馬上就跳出一些信息給我了所以他這個反應時間是非常非常快速的但是都要注意一件事Build cntk比較大的image的container Instances時候我先做幾件事情其實我們後台會幫你做你把指令加好之後我們就要花時間稍微等他一下你把指令加好之後我們就要花時間稍微等他一下等他從網絡上倉庫裏面把image慢慢的拉到Azure上面來然後再來第二個把他拉出來之後呢我要再把他展開來那這中間會有幾個環境的變數會影響到他的時間第一個就是舉例來說Docker hub他有在他的文件上面公告說當你是免費版像我現在就是用個人免費版的我只能用公開的image然後我在用docker免費版的時候因為不是他付費會員所以他在對外的一個頻寬上面會有一些限制那image大小根據這個頻寬總和起來之後就會有可能是你要把他build到你的這個上面來的時候他所花的時間那其實都可以看一下那之前因為為了想要讓各位加速去體驗一下這樣子的一個環境在這邊我是在大概幾分鐘開始之前我有先build一個container
Instances起來那他其實保持cntk剛剛我一開始在build這個我們來重新整理一下你會發現其實這邊也出來了aci的cntk就已經跑出來了那他其實就是正在建public address給你那我們稍微等他一下他就會建立起來那我們稍微等他一下他就會建立起來那這個時間around大概是5~10分鐘結束因為畢竟有個cntk的東西裏面涵蓋的範圍還蠻大的他的image不會太小好那除了這個之外呢其實大家可以看一下那我在build這樣子一個指令就能把快速布建起來這其實就是一個好處其實他還是有些限制舉例來說他有哪些限制呢其實我們現在回到我們的簡報來看一下他的限制有哪些第一個各位記得一件事情其實他我們先介紹一下他可以用哪些情景例如說他可能在用一個Simple簡單的網頁service的時候他其實還不錯Web service另外一個是如果你有很多的batch process需要跑的時候我需要很多單獨的computing
power來幫我做運算一下運算完我就把他cose掉其實這個情境還蠻適合各位來去做一個應用那再來第一個就是我剛剛跟各位講的一個點就是如果你真的想要體驗一下說我在build container的過程會怎麼樣簡單的方式可以讓各位上手體驗這件事情他其實也是有幾個比較沒辦法做到的有幾個限制這邊我還是向各位稍微提醒一下第一個就是說因為他是個很單純的container build起來所以其實如果你們希望他能夠跑一些比較重的項目的時候他比較不適合用在這個場合情境再來第二個我剛剛說他是單獨的container在那邊運行所以說你們希望說你的架構上面需要有前面再接一個所謂的MLB要串一些container的時候在這種情況下這個container也比較不適用這樣子的情境中若是這個樣子的話呢我們下一個章節會介紹AKS會有比較完整的應用好那再來就是一些比較Service Discovery啊其他他也蠻適合的所以其實這些都還蠻方便但是這個有一個重點就是我剛剛一直講的他不支援load
balancing還有一個很大很大的重點他其實也不支援Auto-scaling所謂Auto-scaling就是他沒辦法幫你做橫向擴充因為沒辦法做這件事情的原因就是因為他只是單獨computing power他比較不適合這種你需要做延展的這種事情所以當你需要做這樣的情境架構的時候還是建議各位我們回過頭來參考AKS的服務啊或者一些用ixia vilsen或是Azure原生IS的服務都可以幫各位達到這件事情今天很簡短地幫大家介紹Azure Container
Instances應用情境跟demo那當然後續我會把這些都放在一個公開的位置讓各位來做下載的鏈接所以各位可以歡迎跟我們聯繫包含我今天所demo的所有指令command line我都可以讓各位去做一個參考的應用所以記得我們後面還有第二堂課第二堂課就跟各位正式介紹AKSAKS範圍涵蓋比較廣所以我會多花點時間跟各位做介紹那最後用時間比較短大概是個十分鐘的版本所以各位如果想要對這個ACI有更多的瞭解可以參考我們之前直播的內容的錄音檔好那就先謝謝各位咯