TechTalk 專訪 Episode 27 逐字稿 – Linux Container (LXC) by TechTalk@TW | CodeData
top

TechTalk 專訪 Episode 27 逐字稿 – Linux Container (LXC)

分享:

TechTalk 專訪 Episode 26 逐字稿 – Java 8(下) << 前情

HC – Hao Cheng
MY – Mao Yang
FD – FourDollars

MY:大家好,歡迎收聽 TechTalk@Taiwan第27集,今天是8月18號星期一,我是茂仰。

HC:我是浩誠 今天邀請到的講者是 Four Dollars 4元,他在 COSCUP上有一場關於Linux Container的演說,那時候蠻想去聽的,可是因為安排在舊的演講廳,場地很小擠不進去,今天很高興能夠有這個機會再邀請他上節目來跟聽眾分享什麼是Linux Container,4元你好。

FD:大家好。

HC:可以先請你跟聽眾做一個簡單的自我介紹嗎?

FD:大家好我是 FourDollars,網路上暱稱就是4塊錢,或4元,我本身從1998年開始就一直使用Linux使用到現在,大約在10年前開始到處參加 Linux相關的社群,主要是 TOSSUG台北社群聚會,從草創期就已經參加那個聚會。後來 Hacking Thursday 成立的時候,我剛好也有參與。我現在在台北會跑的社群主要就是禮拜二的土虱(台)跟禮拜四的 Hacking Thursday。

HC:要不要稍微解釋一下土虱(台)是什麼?

FD:就是台語的土虱啊,我們有一個網址是www.tossug.org,然後我現在好像是chief organizer。

HC:主要是Linux的社群?

FD:全名叫做台北開放原始碼軟體使用者社群,就是Taipei Open Source Software User Group 。來參加聚會的人就包山、包海,都有相關。

HC:什麼都有就對了?

FD:對啊,主要是Open source跟free software 領域。

MY:請問你們大概多久辦一次活動?

FD:我們每個禮拜二都會在台大公館附近的 viva 咖啡聚會。

HC:你們聚會好像不一定要有人分享,可能沒有主題也會固定聚會?

FD:有啊,就是大家見面聊一聊,算是蠻隨性的。

HC:這樣也蠻好的,比較不會有壓力。

FD:其實偶爾會安排一些分享,就看有沒有人有興趣,如果有就會準備投影機,然後稍微在網路上宣傳一下。

HC:所以你現在是在 Canonical 對不對?

FD:對,我在那 Canonical 工作。

HC:所以你負責的工作是?

FD:主要在做 Ubuntu OEM 版本,就是隨著硬體一起搭售的 OS。

HC:主要是哪方面的?我知道有搭載Ubuntu的筆電其實不多,大概只有 Dell。

FD:不只,你去他們的網站都可以找到,HP 和 Dell 都有,ASUS和 Lenovo 好像也有一些。

HC:嚴格來說這幾家台灣都買不到對不對?

FD:對。

HC:美國我知道Dell 有賣 Ubuntu 的筆電,HP我不知道。

FD:美國在網路上都可以買到,但是在台灣的能見度很低,可能是市場很小還是怎麼樣。

HC:對啊,我知道國外有一家System76也是專門做 Ubuntu 的筆電。

FD:我也不曉得為什麼,其實做 Ubuntu OEM 的主力在台灣,但是台灣都買不到(笑)。

HC:所以都要買來自己裝,我也想要買來就裝好 Ubuntu 的筆電。
MY:預設安裝的 Ubuntu 版本跟從網路下載 ISO 檔自己安裝差別在哪裡?

FD:差別就是我們把硬體的所有驅動程式都搞定了,買回去打開就可以爽爽的用。

MY:就不會遇到少了 driver 還要自己去下載安裝的問題?

FD:沒錯。

MY:我第一次聽到耶!

FD:就說在台灣沒有什麼能見度。

MY:Ubuntu OEM 你們已經進行幾年了?

FD:我進公司是在4 年前吧,好像是 Ubuntu 10.04的時候,那時候就已經做了一段時間了,但是我不確定是從什麼時候開始的。我有聽到一些國中小學的老師還蠻蠻熱衷於這塊,不知道你們有沒有聽過一個叫easy go 的軟體,它是一個客製化的 Ubuntu版本,裡面加了很多教育、科學用的軟體,譬如說像化學,你就可以查原子、分子那種化合物的 3D 圖案。

HC:主要是教育用的 Ubuntu 就對了?

FD:算是啦,可是他們其實叫做 Ez Go ,老實說全世界拿Ubuntu去改的 distro 還蠻多的。

HC:應該錄一集講 Ubuntu 的,我覺得會很有趣。那我們先拉回來今天的主題 – Linux Container,通常一開始都會先請你介紹一下Linux Container 是什麼,不過在那之前是不是要簡單的介紹一下虛擬化的技術有哪些?我看你的簡報上有寫不同程度的虛擬化技術,可以先解釋一下這個部份嗎?待會再進入今天的主題。

FD:我簡報上面是寫那個完全虛擬化跟半虛擬化,還有系統層級的虛擬化。

HC:對,沒錯。

FD:完全虛擬化就是像一般看到的 VMWare, VirtualBox 那種,就是在 VM 裡面所有的那個硬體裝置全部都是虛擬的。你看到的 memory, display 或者是網路的裝置全部都是虛擬的。半虛擬化的話就是 para-virtualization,完全虛擬化是很多硬體元件就用虛擬化,半虛擬化就不用這些虛擬化的硬體,就弄成中間有一層 hypervisor,系統會知道 hypervisor 的存在,直接跟它溝通,這樣就可以少一層虛擬化的負擔,所以效能上會比完全虛擬化還要快。

MY:剛才我有跟浩誠稍微聊一下說,像這種半虛擬化是不是只能侷限在某個 OS,沒辦法說像完全虛擬化那樣跨不同的 OS?

FD:就我所知你也可以在 Xen 裡面跑Windows。我不知道是怎麼辦到的,可能要 Windows 有某些支援吧!

MY:像你說 Windows 跑在 Xen 也是一種半虛擬化的技術就對了?

FD:應該說它們好像是最先打出名號的。

HC:你還沒講到今天的主題,但是 Linux Container 其實也不是這兩種,它其實是更..怎麼說?

FD:更不虛擬化(笑),就是比半虛擬化還要更貼近 Linux 。

HC:所以 Linux Container 就沒有辦法跑在其他 OS 上對吧?

FD:對,基本上 Linux Container 就是那個 Container 裡面所用的 Linux 跟外面的 Linux 是同一個,如果去跟剛剛的半虛擬化跟完全虛擬化比較,它連半虛擬化的 hypervisor 那一層也沒有了,所以效能會更快,因為根本就是同一個 kernel。

HC:所以也會共用那些library 之類的就對了?

FD:library 要看你去怎麼設定那個。

HC:不同的設定會有不同的差別就對了?

FD:對啊!譬如說,外面跟裡面全部用同樣的一個 file system 也是可以,只是實際上可能會打架,要處理一下 conflict 的狀況,但是這是辦得到的。

HC:怎麼解釋會比較容易去理解 Linux Container 到底是什麼東西呢?

FD:可以想像成你把它隔開來在一個 Container 裡面,但是你的 Linux 還是同一個。

MY:這跟shell類似嗎? 同樣的一個OS,但是跑不同的shell。

FD:好像不太一樣。

HC:shell 還是共用資源,像 Linux Container 可以把 memory 只分 1G 給你,你看到的就只有1G。

FD:對啊,你還可以設定 IO 的優先權,或是哪一個Container 有比較高的 CPU 優先權。

MY:譬如說我的OS是 Ubuntu ,那我可以利用 Linux Container 灌一個 Red Hat嗎?

FD:可以啊!

MY:但是這個 Red Hat 的 Kernel 是跟Ubuntu共用的?

FD:對。

MY:喔,這就蠻神奇的。

FD:這哪有神奇(笑)!

MY:因為據我所知 Linux 裡面有很多 dependencies。像 Red Hat 的 dependencies 跟 Ubuntu 的就不一樣,這是蠻困擾的。

FD:如果是 kernel 的話其實不會有太大的差別。

MY:假設說我想要測試比較早期的,你知道 Red Hat Enterprise 版為了要顧慮到那種客戶支援,據我所知很多公司都還用 Red Hat 3,可是我灌了一個 Ubuntu 的 Kernel 已經到了2.6 了,可是 Red Hat 3 Kernel 還在2.4,或者 2.2 那個時代,這樣的話可以辦得到嗎?

FD:老實說我不知道,這要實際試去使用才知道。

MY:因為剛剛你有提到說它們是共用 kernel,但是我忽然想到不同的distro 的 kernel 版本是不一樣。

FD:對啊是不一樣,主要是看你的 library 跟 Linux Kernel 中間到底用了什麼東西,如果說它用的那些 system call 都可以相容的話,那應該可以很順利的就轉移過去了,這要 case by case 了,我自己目前使用上最舊就是 Debian stable ,都還可以用。

HC:Debian stable是 Debian 7 還是 6?

FD:好像是 6 吧!

HC:現在最新的是 7 嘛?

FD:對,然後 Debian 8 快出來的樣子。

HC:應該沒那麼快吧!我記得 7 才剛出沒多久。

FD:現在 8 要出了。可能年底左右吧,不曉得。

MY:我們剛剛有提到說 Linux Container 不是完全虛擬化,那相較於完全虛擬化跟半虛擬化,Linux Container有哪些好處?

FD:好處就是少了中間的那些轉換層。

MY:所以比較快就對了。

FD:對啊,速度肯定是最快的,因為轉換層都不見了。

HC:相較之下沒有什麼壞處嗎?

FD:壞處就是因為共用一個系統核心,也就是說系統核心如果有bug的話,那個bug可能就會跑到外面,譬如說有個入侵者在裡面入侵,那可能就可以取得到外面的權限,相較於半虛擬化或者完全虛擬化,環境並沒有隔得那麼開。

MY:所以它中毒外面那一層也中毒了?

FD:要看中毒的程度,如果是在 user space的話應該還好,。

MY:但是他有辦法去取得 root 的權限嗎?這是有機會就對了?

FD:對對對。

MY:喔… 什麼樣的人會需要 Linux Container?

FD:什麼樣的人?

MY:什麼樣的開發者或說什麼樣的狀況?

FD:我自己最近的使用狀況是,它可以搭配 QEMU 去 run ARM 的系統,我之前有在玩網樂通,然後網樂通是 sh4 的 CPU architecture,然後我就建了一個Linux Container 是 sh4 的環境,那我就可以在裡面去編譯網樂通上面所需要的 Debian Package。

MY:所以說它等於是說,像我的CPU是跑 x86的,那它還可以模擬 ARM 核心就對了?

FD:應該說模擬 CPU 指令集吧,它有一個CPU指令集的轉換。

MY:這個蠻適合 embedded system 的開發者使用的。

FD:只有在軟體方面,就 Kernel API 什麼的,這個模擬的功能其實是 QEMU 來的。

MY:QEMU。

FD:對,不是 Linux Container 本來提供的。

MY:因為以前我做過一段時間的 embedded Linux,像以前如果要編譯不同開發版子的 ARM CPU的話,我必需先建一個 Cross compiler,比如說要去弄一個比較特別版的 GCC 去編譯不同版本的 ARM 機器碼出來。我才可以在上面跑。

FD:對對對。

MY:那我聽起來好像是說,Linux Container 可以去模擬一個 sh4 的環境出來,那我直接就在上面寫程式,直接在那邊編譯。

FD:對啊,你就不用 Cross compiler ,直接下去 GCC 弄這個。

MY:就直接下 GCC,我就不用去弄一個特別版的 GCC,可以直接在上面就像在一般的 Linux 環境下寫程式這樣?

FD:對。

MY:對啊,這個真的對那個 embedded system 的開發者很方便。

FD:而且你用到 resource 是整個環境的,你如果沒有去限制的話,譬如說你的系統上有16G的RAM,你就可以用16G的RAM,你有2T的硬碟你就可以用2T的硬碟。

HC:那有什麼情況下會比較適合用完全虛擬化那種技術嗎?

FD:完全虛擬化?

HC:對,有什麼事情是 Linux Container 做不到,必須使用像 VMWare 或是VirtualBox 這種方式?

FD:你如果要跑一個整個桌面環境的話,用完全虛擬化可能會容易使用,但是Linux Container 這種方式並不是辦不到,只是說相對比較麻煩。

HC:剛才有提到說像 Linux Container,有哪些資源是可以限制的嗎?比方說 CPU 可以只給它一顆這樣?

FD:可以啊,你可以指定哪一顆 CPU 專門給它用。

HC:還有什麼資源是可以限制的?

FD:硬碟的 IO 啊,然後記憶體的使用量。

HC:硬碟IO是優先權?

FD:對啊,優先權。

MY:這樣講起來,這東西好像也蠻適合亞馬遜那種服務,現在不是很流行說要蓋雲端機房?就是業者會弄很多 server 在上面灌很多 Linux Container,可能就是讓你去租一個Container 來用,現在也有人這樣使用嗎?

FD:我目前沒有聽到這樣使用的,不過 Linux Container 應該算是窮人版的雲端解決方案(笑),就你可以自己弄台主機然後就弄出一個類似的環境,然後它比較省資源。

HC:那剛剛有提到一些 Linux Container 的一些應用,就是像你拿來編譯那個 sh4,那還有什麼應用到 Linux Container 的一些案例,或是產品這樣子?

FD:有啊,不知道你們有沒有聽過 steam?

HC:喔,你說那個遊戲平台嗎?

FD:對。它一開始要做Linux上面的那個 client,當時就是利用 Linux Container 去建立一個Ubuntu 12.04 的環境,然後在裡面跑那個遊戲。

HC:為什麼要這樣?

FD:可能是要跟你的系統隔開來吧,比較乾淨,因為 Linux Container 裡面的環境就是他們自己建立出來的。

HC:這樣比較快就對了。

FD:這樣子使用上比較不會因為你系統上裝了一些奇怪的東西,然後打架還是怎樣。

MY:有人試過說在 Linux Container 弄一個android的環境嗎?

FD:哎~這個想法挺不錯的。

MY:對,因為 android 的 emulator 好慢,所以就有另外一家,那家我忘記叫什麼名字了。
HC:Genymotion
MY:對,他就說他不是用 emulator 是用 simulator 的技術,讓那個速度比較快就像 iOS 的開發環境一樣。所以我剛才聽你這樣講,畢竟 android 的核心也是用 Linux,我在猜就會有人嘗試在 Linux Container 建一個 android 可以讓android開發者,開發速度會比較快一點。

FD:我覺得這個想法很有趣,只是我還沒有看到或知道一些相關的消息。

MY:也許你可以試看看下次可以再跟我們分享。

FD:我有看到在記起來,不過其實 Ubuntu touch 有把它反過來用。

HC:反過來用是?

FD:我不知道你們有沒有聽過Ubuntu touch,就是敝公司開發的一個手機跟平版上的作業系統。

HC:什麼時候要推出啊?

FD:年底應該會有兩間電信商會在賣。一個叫什麼忘記了,一個叫魅族。

HC:大陸那邊的。

FD:對對對。

HC:所以預計是年底之前就對了?

FD:其實我也不太清楚,大約記得在年底,可能耶誕節之類的,但細節我不是很清楚,為什麼要講到這邊?

HC:剛剛說反過來用

FD:就是 Ubuntu touch 其實是反過來用,它是建立一個 Linux Container 然後把 andriod 放在裡面,然後它在建立另外一層有點類似 hypervisor 之類的,你們知道 andriod 裡面用的 C library 是 Bionic 嘛?

MY:不知道。

FD:就一個 C 的函式庫,其實跟我們一般Linux 上面的函式庫的 API 有些不太一樣的地方,也就說我們的應用程式沒辦法直接去使用 andriod 的那個 C 函式庫,除非重新編譯,然後我們就是利用一層去轉換 C 的一些 function call,然後讓它可以間接的去使用到 andriod 的底層,這樣子達到核心的部分其實都是andriod的東西,但是我們外面就是一個標準的 Ubuntu 的環境,連 Kernel 也是 andriod 的,包含那些驅動程式。

MY:所以 Ubuntu touch 也是建構在 andriod 上面就對了?

FD:它是利用 Linux Container 去重複使用 andriod 的那個…

MY:的資源?

FD:對。因為現在很多廠商都在做 andriod ,所以那些 driver 都會 ready。

MY:喔了解。

FD:透個這種方式就是不用再去…

HC:煩惱硬體支援的問題。

FD:對,就不用重複做同樣的事情。

HC:我記得 Firefox OS 好像也做類似的事情。

FD:對。

HC:大家做法其實都差不多啦,不然你全部都重刻那做得完啊。

FD:我不知道怎麼講,其實講到底是 andriod 造成的現象,原本應該是要直接在 Linux 上面弄 driver,結果 andriod 就弄了一個 HAL 層把它隔開來,它有 Bionic 那個 C 函式庫,變成跟原本 Linux Kernel 都不相容了。

MY:我記得上次華碩的手機不是也發生一件事嗎,就是使用者升級了 Facebook,結果在他的手機就沒辦法work,後來有發現說Facebook裡面用了好像有寫了一些 C…

FD:剛好那個轉換層沒有處理到。

MY:對,後來他們也是利用類似這種 Linux Container 的技術去解決,據我所知華碩那顆CPU好像是 Intel ,不是 ARM。
HC:你說的那一批是intel吧!

FD:對,intel的。

MY:聽起來 Linux Container 好像可以解決不同架構之間的相容性問題。

FD:理想啦,我覺得實際上還有一大段距離。你要接的東西如果是直接跟硬體相關的話,其實會有問題。

MY:driver 還是要重寫吧?

FD:要看使用情況,case by case。

HC:我記得Linux Container其實也推出蠻久了。

FD:google 有把一些 Linux Container 技術放到核心裡面,然後 Canonical 有去做 user space 的程式,大致就是 Docker 之前用的那一段。

MY:Linux Container 背後也是 Ubuntu 在support 嘛?

FD:據我所知道 user space 這邊是 Canonical 有全職的工程師下去開發,然後是 Oracle 跟IBM,我在簡報裡面有寫,其他都忘記。

HC:好像是有幾個大廠。

FD:對。只是最近好像是我們公司的開發比較活躍,其他公司就沒有那麼活躍。

HC:是喔?

FD:可能是我們自己也有用到,像剛剛講的Ubuntutouch,那另外我們公司還有一個雲端的產品叫 Ubuntu Juju 也有用到 Linux Container。

HC:所以也花比較多心力在維護這個專案就對了。

FD:大概是這樣吧!

MY:想請問在使用 Linux Container 你是屬於使用者角色,還是你本身也有參與Linux Container 的開發?

FD:我算是user。

HC:茂仰你還有什麼想了解的?
MY:像 Linux Container 目前市面上有沒有什麼商業化的產品?還是說僅限於 Linux 的developer,或是在使用 Linux 開發環境的人才會用?這種東西有沒有應用在其他一些商用產品上面?

FD:我們公司有用到的就是 Ubuntu Juju 和 Ubuntu touch 這兩個產品,至於其他公司的話我就不是很清楚了,還有 steam 也有用到一些吧!

HC:就剛剛提到的那些?

FD:對啊,在外面我就不是很清楚。

MY:據你所知 Linux Container 的 open社群非常活躍嗎?他們的平均 release cycle 大概是多久?

FD:這個我就不清楚。

MY:整個訪問聽下來,感覺這個東西好像跟系統核心的關連性蠻大的,會不會造成它的那種變化也蠻快?

FD:我之前之所以會去 COSCUP 分享,主要的原因是那時候剛好出了 1.0,之前都還是 0.8、0.9 什麼的。

HC:所以才剛出1.0就對了?

FD:對,就是我在投稿的時候剛出 1.0,1.0應該算是成熟了吧?

HC:應該算相對比較成熟穩定。我們準備的問題其實差不多了,4元你還有什麼想要補充的嗎?

FD:我剛剛有提到我們公司,置入性行銷一下(笑)!

HC:沒有問題!歡迎歡迎!

FD:公司其實有做一個雲端的服務,有點類似 Docker ,如果在本機上就是使用 Linux Container 來建構那些 VM。

HC:如果不是在本機呢?

FD:你就可以用openstack,或者是 Amazon 那個什麼?

HC:AWS。

FD:對,只是設定檔調一下而已,就可以用 Linux Container 或是用 Amazon 的 AWS 。

HC:你要不要稍微解釋一下那個產品?

FD:它的目標是要讓這些雲端的 application 可以無痛的佈署,我們現在主打的是圖形化介面,就是你拉一拉就可以把 service 跑起來,就是那種有 Frontend, Backend,中間還有中間還有 load balancer 的複雜架構,都可以透過圖型的拖拉建構出來。

HC:所以是用圖形化的介面,然後在網頁上操作這樣?

FD:對啊,Ubuntu Juju 可以用命令列來建立一個圖形化的中央控管,你就有一個中央控管連進去,然後再去建立,因為 Linux Container可以支援巢狀式的結構。

HC:是喔? container 裡面再放一個 container 就對了?

FD:對對對,這樣也可以。

HC:這是 Inception 嗎?

FD:可是它不會越來越慢。

HC:是喔?

FD:是啊,只是一個區隔 group 的概念,但是不會說裡面跑一跑還要跑到上層,還要再跑到上層什麼的。

HC:ok!每一層的地位都一樣就對了?

FD:對,只是一個邏輯上的區隔。當然還有 resource 的控管,如果你有加一些 resource 控管,就是外面分到的,裡面再分一點這樣會越分越少,這是一定的,但是如果都沒有控管的話,大家權限應該都一樣,所以不會像 Inception。

HC:所以 Canonical 現在也做一些比較偏雲端服務的軟體。

FD:我們做蠻久的耶,我們有一個 Cloud 的 team 在做。

HC:可是 ubuntu one 就收掉。

FD:Ubuntu one 不是 Cloud team 負責的東西。是另外一個team的。

HC:ok!Cloud service主要就是 Juju 就對了?

FD:Juju 只是其中一部分。

MY:在台灣的團隊大概有多大?

FD:台灣團隊哇…我也不太清楚,有4、50個吧!

MY:4、50個。
HC:那也蠻多的。

FD:我們(在 101)有兩層,有46跟47樓,每一層大概只有4分之1、2分之1之類。

HC:ok!都是研發的嗎還是?

FD:有sales、有PM、有QA。

HC:那還蠻多,也算是不小的團隊。

FD:Ubuntu OEM的主力是在台北這裡啊,所以會有蠻多人的。

HC:雲端那個 team 也是在台北?

FD:雲端..台北好像有一點點,那其他都是在國外。

MY:當初 Ubuntu 創辦人是不是有上太空那一個?他現在還有在 involve Canonical 這家公司嗎?

FD:有啊,最近看到的就是 Cloud 這邊。

MY:所以說他還是實際有參與你們整個公司?

FD:Ubuntu Juju 好像就是他的主力吧?就是要有一個無腦的雲端服務的解決方案。

HC:對 Linux Container 還有要補充的嗎?

FD:我來總結一下 Linux Container,它有很多功能,很像是積木啦,就是你要什麼功能你要自己去組合,不像 Docker 是給你一個訂製好的一些 service,Linux Container 就是你要自己去發掘用途,然後去調整設定達到目的,它只是隔離環境的一個機制而已。

HC:好,那今天謝謝4元來接受我們的訪問。

FD:好,不客氣!

HC:今天的訪問就到這邊告一個段落,謝謝大家的收聽,下次見,拜拜!

FD:謝謝大家。

HC:拜拜!
MY:拜拜!

FD:大家拜拜!

後續 >> TechTalk 專訪 Episode 28 逐字稿 – Interview with PCMan about LXQt

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

熱門論壇文章

熱門技術文章