You are on page 1of 74

虛擬化 - 2

Virtualization – 2
(Container)

Container
= 貨櫃
Outline 1
• Container
• Network Functions Virtualization
貨櫃 or Container ( 貨運 )

https://kknews.cc/zh-tw/news/pgn8a9j.html

資訊領域也希望利用 container 的概
念達到達到類似目的:
• 軟體 ( 或系統 ) 封裝 ( 隔絕 )
• 軟體能在不同平台運作
Outline 2
• Container / Docker 技術產生背景
– 傳統虛擬化技術問題
• Container 技術簡介與示範
• Docker 技術簡介與示範
Google Cloud

PaaS

IaaS

09/19/2023 5
Google 每週啟用 20 億個
Container

http://www.ithome.com.tw/news/91839, 2014-10-29
Container everywhere…
Container 技術
• IBM 發展
• Linux ( 世界 ) 使其壯大
– LXC (LinuX Container)
• Docker ( 公司 ) 讓其發光發熱
LXC Linux Container
( 輕量級的虛擬化 )
傳統虛擬化技術
• 從作業系統層下手,建立一個可以用來執
行整套作業系統的沙箱 / 盒 (Sandbox)
獨立執行環境
– 習慣以虛擬機器 (Virtual Machine) 來稱呼
• 接著安裝應用程式所需的執行環境,如網
站伺服器、資料庫程式、中介軟體等

http://www.ithome.com.tw/news/91839
傳統虛擬化技術
• 但,將作業系統打包進虛擬機器中的
後果是…
– 任何虛擬機器都得先裝妥一套作業系統
後才能開始執行應用程式
– 導致虛擬機器的建立速度,受限於作業
系統的開機速度,得等上數十秒到數分

http://www.ithome.com.tw/news/91839
傳統虛擬化技術
• 虛擬機器的映象檔所需容量也不小,即使
要執行的程式碼只有 10KB ,也得安裝一
整套上百 MB 的作業系統軟體才行
• 執行作業系統本身也得消耗不少的運算資
源,虛擬機器之作業系統仍瓜分了不少應
用程式能用的實際運算資源

http://www.ithome.com.tw/news/91839
Container :另一種虛擬化技術
• 不是在作業系統外建立虛擬環境,而是在
作業系統內的核心系統層來打造虛擬機器
• 透過共用主機作業系統的作法,取代多個
Guest 作業系統的功用
– Container 也因此被稱為作業系統層虛擬化技

• 核心系統層? Again?

http://www.ithome.com.tw/news/91839
Linux 核心與發行版本
• Linux 核心 (Kernel)
– Linux Kernel Maintainers ( 核心維護群 )
– Patches from many sources ( 熱心“網友” )
• Linux 發行版本 (Distribution)
– 不同公司或組織會取前述核心、各自發行其獨
特版本 ( 安裝方式、搭配軟體、軟體管理等等
會有所差異 )
– Ubuntu, Debian, Fedora, CentOS …
Anthony's list of Linux distros
by difficulty
Linux Kernel
(extracted: 2022/02/13)
Container-based 虛擬化
• 作業系統層級之虛擬化 (OS
level virtualization)
– 多個“隔絕”之系統 ( 在所謂“容器”內 ) 能
同時運行於一個主機上、並且共享同個核心
(Kernel)
– 相較於傳統虛擬化,同樣硬體配置下,主機可
運行 6~8 倍的“容器”內系統
• 在 Linux 世界,稱之為 LinuX Container
(LXC)
Container-based 虛擬化
• 簡單地說 …
– 在同一個 Linux 系統 (e.g., Ubuntu) 上能夠
長出多個 Linux 系統 (e.g., Ubuntu, Debian,
Fedora, etc. 也僅限 Linux 系統 ) ,但所有的
Linux 系統 ( 不論是初始的系統、或是長出來
的其他系統 ) 均共用初始的系統的核心
(Kernel)
• Container 是利用系統核心控管機制來分
配主機資源,也就不需要另外安裝虛擬機
器來各別管理
http://www.ithome.com.tw/news/91839
Container? 輕量級的虛擬化?
sandbox

sandbox sandbox
Container 示範 - 1
• 初始的系統: Ubuntu Server 20.04
• ( 前置動作…快轉… )
– apt install lxc
– apt install lxc-templates
• 在此 Ubuntu Server 20.04 環境可以長出
來的 Linux 版本 (templates) 包括 …
Container 示範 - 2
• 新增 (or 建立 ) 虛擬機 (or container)
– $ lxc-create -n ubuntu1 -t ubuntu
name=ubuntu1 、系統版本為 ubuntu
Container 示範 - 3
• 查看目前已建立之虛擬機 (or container)
– $ lxc-ls
Container 示範 - 4
• 查看目前已啟動之虛擬機 (or container)
– $ lxc-ls --active
Container 示範 - 5
• 啟動已建立之虛擬機 (or container)
– $ lxc-start -n ubuntu1 -d

daemon
Container 示範 - 6
• 查看目前已啟動之虛擬機 (or container)
– $ lxc-ls --active
Container 示範 – 7
• 虛擬機 (or container) 狀態
$ lxc-info -n ubuntu1
Container 示範 – 8
• 虛擬機 (or container) 狀態
Container 示範 - 9
• 連線至 ubuntu1 虛擬機 (or container)
– $ lxc-attach -n ubuntu1 -- login
Container 示範 - 10
• 關閉 ubuntu1 虛擬機 (or container)
– 在虛擬機內部

– 在主機
• $ lxc-stop -n ubuntu1
Container 示範 – 其他
• 複製虛擬機 (or container)
– $ lxc-copy -n ubuntu1 -N ubuntu1_clone
• 虛擬機系統快照
– $ lxc-snapshot -L -n ubuntu1
• 虛擬機系統快照回復
– $ lxc-snapshot -r snap0 -n ubuntu1
LXD?
• LXD is, in a way, has LXC as its subset,
and we can say that it is its extension.
– LXD  LXC

https://www.educba.com/lxc-vs-lxd/
Docker
Docker 的開端
• dotCloud 公司於 2013 年 3 月公開了一
個從 2010 年開始進行的內部專案
Docker ,並以開源釋出程式碼
– 這是 docCould 開發自家 PaaS 服務時,為
了利用 Linux Container 技術管理 PaaS 上
的應用程式所開發的平臺
• dotCloud  Docker ( 更改公司名 )
http://technews.tw/2016/06/29/micrisoft-want-to-buy-docker/
https://www.docker.com/sites/default/files/Infographic_OneDocker_09.20.2016.pdf
Docker 不只是一項 Container 技

• 而是要打造一個 Container 生態系
– 讓應用程式可以在任何地方執行
– 用 Container 技術讓應用程式具有相同的封
裝方式、啟動方式、存取方式,不用修改就能
在任何支援 Docker 的平臺上執行
• Docker 是一個可以來建置、移動和執行分
散式應用程式的開放平臺
Docker 與標準化的貨櫃之類比
• 就如同有了標準化的貨櫃,擁有統一的尺
寸規範、一致的固定孔洞位置、封裝方
式,讓貨櫃可以成為任何貨物透過各種方
式、不論是汽車、火車、輪船、飛機都能
載送的共通容器
Docker 不只是一項 Container 技術
Virtual Machine vs LXC
Docker vs LXC
Docker 不僅僅只是一項
Container 技術
簡單說 …
• 想像有一個 App Store ( 或 Google Play)
裡面有無數的 APPs ;然後,不論你用的
是 iPhone 、 Android 或 Windows
Phone 均可下載前述任何 APPs 、安裝、
並使用 …
Docker 示範
倉庫 - 集中存放映像檔的地方
Docker 示範 - 1
• ( 前置動作…快轉… )
• 搜尋某個 image ( 程式 or APP)
– $ docker search nginx
Docker 示範 - 2
• 下載 image ( 程式 or APP)
– $ docker pull nginx
Docker 示範 - 3
• 執行 image ( 程式 or APP)
– $ docker run -d -p 8080:80 nginx
• 檢視執行狀況
– $ docker ps
In reality …
Docker FAQ
• The Docker platform runs natively on
Linux (on x86-64, ARM and many other
CPU architectures) and on Windows
(x86-64).

https://docs.docker.com/engine/faq/
應用 Docker 案例
whoscall

http://www.ithome.com.tw/news/92148
應用 Docker 案例
Synology

https://www.synology.com/en-us/dsm/app_packages/Docker
Synology Docker
Synology Docker
NAS 架設 ShadowSocks
代理 Server

like VPN, but not exactly…


(Virtual Private Network)
ShadowSocks
• Shadowsocks ( 簡稱 SS) 是一種
代理 (proxy) 方式的加密傳輸協

– 也可以指實現這個協定的各種程式
• Shadowsocks 的標誌為紙飛機,而專
門提供 Shadowsocks 或類似軟體
( 如 V2Ray) 伺服器的網站也被稱為機
場 https://zh.wikipedia.org/wiki/Shadowsocks
ShadowSocks

Local Proxy ( 代理 ) Server


• 由於傳送的只是數據本身,並且不 Proxy ( 代理 ) Server
加入可被辨認的特徵,因此很難被
辨認為翻牆內容
• 但 IP 位址容易被鎖定 https://www.johntool.com/ssr-recommend-lineinchina/
Docker ( 使用者角度 )
App Store 裡的 App Store
Shadowsocks
Kubernetes (K8S)
• 一個可以協助我們微服務 (microservices,
e.g., dockers) 的系統,他可以自動化地部
署及管理多台機器上的多個容器
(Container)
• K8s 想解決的問題是:
– 手動部署多個容器到多台機器
– 監測管理這些容器的狀態
One year using Kubernetes in
production: Lessons learned

https://techbeacon.com/devops/one-year-using-kubernetes-production-lessons-learned
網路虛擬化
Network Virtualization

just giving a brief idea …


電 ( 子 ) 商 ( 務 )  電 ( 信 ) 商?
抵制華為?
廣達 5G ?
5G 冒出新強權
• 日本電商巨擘樂天集團已取得電信執照,
將於今年 10 月躍身為日本第四大行動通訊

• 樂天一開始只打算推出 4G 服務
• 未來樂天的 4G 基地台只需升級軟體,就能
應付 5G 網路需求
– 電子商務商跨入電信領域不稀奇,關鍵的是上
面那句話 …
傳統電信網路
眼花撩亂,是不是?

HSS 是一個中央資料庫,包含與用戶
相關的信息和訂閱相關的信息。
HSS 的功能包括 : 移動性管理,呼叫和
會話建立的支持,用戶認證和訪問授權
Network Function
Virtualization

將專屬硬體提供的功能軟體化
並執行於一般通用性的電腦
特殊硬體 vs 通用硬體
Cisco 2501 路由器 (1999)
• CPU: 68030
• RAM: 4M ~ 16M
• USD: 1200
• Cisco System's low-cost
• entry into the access server
• marketplace

INTEL CPU
• 80386 (1985)
• 1999: Pentium III
Why NFV?
• 迭代時需要投資,但 …
– e.g., HLR (2G)  HSS (3G)  HSS (4G)
– 不斷變動的應用、越來越多的刁民 …
Why NFV?
• 省錢
– 使用 COTS :
Commercial Off NFV 標準聯盟…
The Shelf Hardware
擺在架子上的一般商用硬體
• 快速部署
• 容易擴充
• etc
電信商
NFV 後 ?
• 電信商營運成本降低、也更能提供滿足客
戶需求的服務
• 但,對非傳統電信商而言,進入電信服務
的門檻也降低了…
– 樂天就是一個例子
09/19/2023 73
Extra Bonus
• How to Install NextCloud on Ubuntu
20.04 with Apache
– https://linuxways.net/ubuntu/how-to-
install-nextcloud-on-ubuntu-20-04-with-
apache/

You might also like