Cloud Lab: 泰晓实验云台【转】
轉自:http://tinylab.org/cloud-lab/
可快速構建的計算機課程在線實驗平臺
由 Wu Zhangjin 創建于 2017/10/06 評論 打賞項目描述
泰曉實驗云臺 項目致力于創建一套計算機課程的在線實驗平臺。
- 使用文檔:README.md
- 在線實驗:泰曉實驗云臺
- 注冊帳號:泰曉開源小店
- 代碼倉庫:https://github.com/tinyclub/cloud-lab.git
- 基本特性:
- 基于 Docker,一鍵安裝,幾分鐘內就可構建,節約生命,生命,生命。
- 通過 Docker CE 和 Docker Toolbox 支持所有 Linux,Windows,Mac OSX 平臺
- 可直接通過 Web 遠程訪問(支持ssh和vnc),非常便捷,便捷,便捷。
- 支持即時錄制,隨時記錄和分享學習過程。
- 已內置多個示例 Lab:Linux Lab,Linux 0.11 Lab, CS630 Qemu Lab,Markdown Lab
- 可輕松擴展更多 Lab,歡迎大家參與貢獻
- 支持多人協同實驗,適合遠程一對一教學指導或者協同開發
- 支持廣播教學模式,適合大學課程實驗、企業培訓以及講座即時演示
- 登陸界面
相關文章
- 如何快速部署云實驗環境(Cloud-Lab)
- 桌面秀(Showdesk.io)— 輕松錄制,即時分享
- 利用 Linux Lab 完成嵌入式系統開發全過程
- 基于 Docker/Qemu 快速構建 Linux 內核實驗環境
- 基于 Docker 快速構建 Linux 0.11 實驗環境
安裝 Docker
Docker 是 Cloud Lab 的基礎,需要先安裝好,可參考:
- Linux 和 Mac 系統:Docker CE
- Windows 系統:Docker Toolbox
安裝完 docker 后如果想免 sudo 使用 linux lab,請務必把用戶加入到 docker 用戶組并重啟系統。
$ sudo usermod -aG docker $USER由于 docker 鏡像文件比較大,有 1G 左右,下載時請耐心等待。另外,為了提高下載速度,建議通過配置 docker 更換鏡像庫為本地區的,更換完記得重啟 docker 服務。
$ grep registry-mirror /etc/default/docker DOCKER_OPTS="$DOCKER_OPTS --registry-mirror=https://docker.mirrors.ustc.edu.cn" $ service docker restart如果 docker 默認的網絡環境跟本地的局域網環境地址沖突,請通過如下方式更新 docker 網絡環境,并重啟 docker 服務。
$ grep bip /etc/default/docker DOCKER_OPTS="$DOCKER_OPTS --bip=10.66.0.10/16" $ service docker restartLinux 和 Mac 系統
在 Linux 和 Mac 系統上,安裝完 Docker CE 后就會自動啟動 docker 服務。
在 Mac 系統下,雖然也可以通過 Docker Toolbox 來安裝 Docker,不過 Docker CE 已經支持原生 Docker,性能和體驗會更好,Cloud Lab 也已經支持這種方式,所以 Mac 下也推薦用 Docker CE 安裝。
Windows
Windows 雖然也支持通過 Docker CE 直接安裝 Docker,但是如果要使用 Cloud Lab,需要一套兼容 Linux 和 Mac 的腳本環境,所以目前還是推薦 Windows 用戶通過 Docker Toolbox 來安裝 Docker。
由于沒有可測試的 Windows 系統,下面以 Mac OSX 為例介紹如何通過 Docker Toolbox 安裝 Docker。
以 Mac 系統為例,安裝完 Docker Toolbox 以后,打開 kitematic 并運行,會在 Virtualbox 中創建一個名為 default 的 Linux 系統,該系統為 TinyCoreLinux,其中集成了 docker 服務。
該系統啟動后,會掛載兩個目錄,可用于存放實驗源碼,它們是:
- /Users:由 Mac OSX 的 /Users 掛載過來,方便在 Mac OSX 和該系統之間交換文件。
- /mnt/sda1:在 Virtualbox 上外掛的一個虛擬磁盤鏡像文件,默認有 17.9 G,足夠存放常見的實驗環境。
請務必注意,該 default 系統中默認的 /root 目錄僅僅掛載在內存中,關閉系統后數據會丟失,請千萬不要用它來保存實驗數據。
另外,由于該系統未提供桌面,所以需要先獲取該系統的外網地址,即 eth1 網口的 IP 地址,并通過 Windows 或者 Mac OSX 訪問 Lab。
$ ifconfig eth1 | grep 'inet addr' | tr -s ' ' | tr ':' ' ' | cut -d' ' -f4 192.168.99.100如果是自己通過 Virtualbox 安裝的 Linux 系統,即使有桌面,也想在外部系統訪問時,則可以通過設置 ‘Network -> Adapter2 -> Host-only Adapter’ 來添加一個 eth1 網口設備。
免 root 使用 Docker
安裝完 docker 后如果想免 sudo 使用 Cloud Lab,請務必把用戶加入到 docker 用戶組并重啟系統。
$ sudo usermod -aG docker $USER免密運行 Lab
運行 Lab 過程中,部分操作需要 root 權限,如果想免密使用,可以配置下 sudo。如果配置過程中出錯,可以用 pkexec visudo 補救。
$ sudo -s $ echo "$SUDO_USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$SUDO_USER提升鏡像下載速度
由于 docker 鏡像文件比較大,有 1G 左右,下載時請耐心等待。另外,為了提高下載速度,建議通過配置 docker 更換鏡像庫為本地區的,更換完記得重啟 docker 服務。
$ grep registry-mirror /etc/default/docker DOCKER_OPTS="$DOCKER_OPTS --registry-mirror=https://docker.mirrors.ustc.edu.cn" $ service docker restart避免網絡地址沖突
如果 docker 默認的網絡環境跟本地的局域網環境地址沖突,請通過如下方式更新 docker 網絡環境,并重啟 docker 服務。
$ grep bip /etc/default/docker DOCKER_OPTS="$DOCKER_OPTS --bip=10.66.0.10/16" $ service docker restart如果上述改法不生效,請在類似 /lib/systemd/system/docker.service 這樣的文件中修改后再重啟 docker 服務。
$ grep dockerd /lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H fd:// --bip=10.66.0.10/16 --registry-mirror=https://docker.mirrors.ustc.edu.cn $ service docker restart實驗目錄
如果使用了 Docker Toolbox 安裝 Docker,則啟動 Virtualbox 上的 default 系統后,請使用 /mnt/sda1 目錄。因為默認的 /root 目錄僅僅掛載在內存中,該系統關閉后數據會丟失。
$ cd /mnt/sda1在 Linux 或者 Mac 系統上,找一處當前用戶可存儲的目錄即可,例如 ~/Documents。
$ cd ~/Documents/下載 Cloud Lab
$ git clone https://github.com/tinyclub/cloud-lab.git $ cd cloud-lab下載 Lab
可以列出來后再選擇:
$ tools/docker/choose LOG: Current Lab is linux-0.11-lab LOG: Available Labs:1 cs630-qemu-lab2 linux-0.11-lab3 linux-lab4 markdown-lab5 qing-lab6 tinylab.orgLOG: Choose the lab number: 2LOG: Download the lab...Already on 'master' Your branch is up-to-date with 'origin/master'.Already up-to-date. LOG: Source code downloaded to cloud-lab/labs/linux-0.11-lab也可直接指定并下載:
$ tools/docker/choose linux-0.11-lab實驗源碼下載在 labs/ 目錄下:
$ ls cloud-lab/labs/linux-0.11-lab book COPYING examples Makefile Makefile.emu Makefile.help README.md src callgraph doc images Makefile.cg Makefile.head Makefile.tags rootfs tools運行 Lab
下述命令會直接拉取實驗環境的 Docker 鏡像并運行,運行完以后會打印出 VNC 的登陸鏈接。
$ tools/docker/run LOG: VNC screen recorded in cloud-lab/recordings LOG: User: ubuntu ,Password: n4sqtv ,VNC Password: 3m9k7h ,Viewonly Password: c9tt4h Please login:* Normal: http://localhost:6080/?u=3699ab&p=3m9k7h* Viewonly: http://localhost:6080/?r=3699abc9tt4hUser: 3699abPassword: 3m9k7hPassword: c9tt4h (Viewonly)從 Log 中可以看出,其中實驗會話錄制的默認目錄為 recordings/。
正常的實驗環境登陸地址為 Normal 所在行鏈接,而 Viewonly 所在行鏈接可用于廣播教學,給學生觀看。
該登陸鏈接可以通過現代瀏覽器打開,比如 Firefox, Chromium-browser 以及 Safari,Chromium-browser 為首選,其兼容性和性能最好。
登陸 Lab
Cloud Lab 提供了多種登陸方式:
- tools/docker/bash:在本地直接登陸容器并運行 bash 命令行
- tools/docker/ssh:通過 ssh 在本地或者遠程登陸命令行
- tools/docker/webssh:通過瀏覽器登陸 ssh 命令行
- tools/docker/vnc:通過瀏覽器登陸桌面
而 tools/docker/run 運行的最后就是執行 tools/docker/vnc 自動登陸。tools/docker/vnc 會打開一個網頁,本地執行會自動填入帳號和密碼登陸,遠程登陸的話,可復制鏈接或者根據提示手動輸入帳號和密碼。
開展實驗
登陸以后就可以在桌面上點擊 Lab 終端的快捷方式開展實驗,在實驗過程中,可以點擊桌面的 Help 快捷頁面查看幫助。
已添加 Lab 的詳細用法,請參考:
- CS630 Qemu Lab:X86 Linux 匯編語言實驗環境
- Linux 0.11 Lab: Linux 0.11 內核實驗環境
- Linux Lab:Linux 內核和嵌入式 Linux 實驗環境
- Markdown Lab:Markdown 文檔編輯環境,包括文檔、書籍、幻燈和簡歷模版
實驗效果
這里有一份 Linux Lab 的實驗效果圖:
以及相應的演示視頻,該視頻由 Cloud Lab 自身錄制:
?
更多實驗演示效果請參考 桌面秀 – showdesk.io。
多人協同
Cloud Lab 默認開啟了多人共享模式,同一個 Normal 鏈接可以在多處登陸,登陸后,雙方都可以操作,也可以看到對方的操作,當然,由于登陸的是同一個桌面,多人不能同時操作。
廣播教學
該廣播教學功能可用于大學實驗室教學、企業培訓、遠程授課、甚至是課堂或者講座時即時演示。
授課模式
Cloud Lab 提供的 Viewonly 鏈接可以用于學生,該鏈接可以多人同時登陸,但是只可以觀看,不能操作,因此很適合授課時學生使用。
在課堂或者實驗室教學中,老師使用 Normal 鏈接進行操作演示,學生們使用 Viewonly 鏈接觀看老師的演示,就可以完成授課過程。
互動模式(集中式)
如果學生們在觀看老師的演示時也要同步做實驗,那么可以通過 tools/deploy/run 人手創建一個可以操作的帳號。
例如,為學生 john 和 tom 分別創建一個 Linux 0.11 Lab:
$ tools/deploy/run linux-0.11-lab john $ tools/deploy/run linux-0.11-lab tom查看實驗帳號:
$ tools/deploy/release Lab: linux-0.11-lab-29979, User: tom* VNC: http://localhost:6080/?u=1e6005&p=ktft7s* VNC_VIEWONLY: http://localhost:6080/?r=1e6005w7lxxm* Webssh: http://localhost:4433/?ssh=ssh://tom:n7p7fd@10.66.0.3:22 Lab: linux-0.11-lab-29965, User: john* VNC: http://localhost:6080/?u=3699ab&p=7cn9wn* VNC_VIEWONLY: http://localhost:6080/?r=3699ab3mvmmp* Webssh: http://localhost:4433/?ssh=ssh://john:tk9lbf@10.66.0.2:22默認地址是 localhost,如果有一個域名或者主機之外可訪問的 IP 地址,可以填入 .host_name,例如:
$ echo tinylab.cloud > .host_name $ tools/deploy/release Lab: linux-0.11-lab-29979, User: tom* VNC: http://tinylab.cloud:6080/?u=1e6005&p=ktft7s* VNC_VIEWONLY: http://tinylab.cloud:6080/?r=1e6005w7lxxm* Webssh: http://tinylab.cloud:4433/?ssh=ssh://tom:n7p7fd@10.66.0.3:22 Lab: linux-0.11-lab-29965, User: john* VNC: http://tinylab.cloud:6080/?u=3699ab&p=7cn9wn* VNC_VIEWONLY: http://tinylab.cloud:6080/?r=3699ab3mvmmp* Webssh: http://tinylab.cloud:4433/?ssh=ssh://john:tk9lbf@10.66.0.2:22對于 Mac 和 Windows 系統,則可以直接填入 eth1 的 IP 地址,例如咱們上面通過 ifconfig eth1 獲取到的地址:
$ echo 192.168.99.100 > .host_name $ tools/deploy/release Lab: linux-0.11-lab-29965, User: john* VNC: http://192.168.99.100:6080/?u=d41d8c&p=7cn9wn* VNC_VIEWONLY: http://192.168.99.100:6080/?r=d41d8c3mvmmp* Webssh: http://192.168.99.100:tk9lbf/?ssh=ssh://john:linux-0.11-lab-29965@4433:22 Lab: linux-0.11-lab-29979, User: tom* VNC: http://192.168.99.100:6080/?u=d41d8c&p=ktft7s* VNC_VIEWONLY: http://192.168.99.100:6080/?r=d41d8cw7lxxm* Webssh: http://192.168.99.100:n7p7fd/?ssh=ssh://tom:linux-0.11-lab-29979@4433:22之后即可在 Mac OSX 和 Windows 系統中,訪問上述鏈接開展實驗。
互動模式(分布式)
上面的互動模式采用的是集中式,在單臺服務器上創建所有實驗帳號,好處是學生無需創建帳號,可以直接使用,這樣的效率更高,壞處是如果同時上課的學生比較多,這臺集中式的服務器就需要配置更好的硬件資源,包括處理器、內存和磁盤空間都需要根據人數進行合理配置。
如果沒有這樣的服務器資源,也可以采用分布式的方式,即學生們自行參照上述步驟在實驗室的電腦或者自己攜帶的筆記本電腦上搭建好實驗環境。
上述集中式的方式適合課堂上即時互動,下述分布式的方式適合在實驗室上傳統的實驗課。
遠程授課
上面介紹的三種方式適合面對面授課,如果想利用 Cloud Lab 做遠程授課,需要通過 YY、釘釘、QQ、微信之類軟件增加語音功能。
添加 Lab
先盡量復用現有的 Lab,如果現有的 Lab 無法滿足要求,也可以自行添加。
一個 Lab 主要包括兩部分:實驗環境和實驗源碼,下面介紹如何添加它們。
添加實驗環境
以 linux-0.11-lab 為例。
實驗環境的配置文件放在 configs/ 目錄下,先看看目錄結構:
$ tree configs/linux-0.11-lab/ configs/linux-0.11-lab/ ├── docker │?? ├── caps │?? ├── devices │?? ├── limits │?? ├── name │?? └── volumemap ├── Dockerfile └── system└── home└── ubuntu└── Desktop├── help.desktop├── lab.desktop├── showdesk.desktop└── showterm.desktop下面對這 3 部分做介紹:
-
Dockerfile
先找一個基礎 Docker 鏡像,比如 ubuntu:14.04.5,又比如 tinylab/cloud-ubuntu-vm,然后在該基礎上寫 Dockerfile,添加新的工具。可通過 docker search tinylab 查看現有鏡像:
$ docker search tinylabtinylab/linux-0.11-lab ...tinylab/linux-lab ...tinylab/cs630-qemu-lab ...tinylab/cloud-ubuntu-dev ...如果添加 Docker 鏡像很通用,也可以直接往 Cloud Ubuntu 提交源碼。
-
docker/
該目錄用于設置鏡像名、配置資源、或者添加需要用到的設備等。鏡像名命名規則為 tinylab/<LAB_NAME>,例如:tinylab/linux-0.11-lab。
-
system/
該目錄按照 Linux 標準目錄結構存放,例如這里添加了幾個桌面快捷方式。也可以類似添加其他文件,例如預先編譯好的程序或者腳本文件。
除此之外,還有一個比較重要的目錄:tools/,這里沒用到,該目錄下可以添加兩個重要文件:
-
tools/host-run
在啟動實驗環境之前在主機上運行,可用于做必要的準備,比如說針對 Linux Lab,就需要先插入 nfsd 內核模塊。
-
tools/container-run
在啟動實驗環境后在容器內運行,比如 Linux Lab 中用它來啟動一些網絡服務。
準備好之后,就可以構建 Docker 鏡像:
$ tools/docker/build linux-0.11-lab構建以后如果覺得該環境有通用性,也可以往 Cloud Lab 代碼倉庫 提交。
添加實驗源碼
實驗用到的源代碼、文檔和工具等可以創建一個 Git 倉庫存放起來,甚至上傳到 Github,然后可作為 git submodule 導入到 labs/ 目錄下。例如:
$ cd labs/ $ git submodule add https://github.com/tinyclub/linux-0.11-lab.git錄制視頻
Cloud Lab 支持自動錄制實驗過程。登陸進去之前,進行如下設置并點擊 Apply 后再登陸即可開啟錄制。要停止錄制,退出實驗環境即可。
錄制完的視頻可以回放,通過設置上面的播放頁面進去,選擇剛錄制的內容播放即可。
該功能可以用于老師錄制教學演示視頻,也可以用于學生交作業,檢查學生的實操練習情況。
獲取帳號
如果想快速體驗,歡迎通過 泰曉開源小店 購買已經創建好的在線實驗帳號。
如果覺得該實驗平臺非常有用,歡迎掃下面的二維碼贊助我們。
| 支付寶打賞 ¥9.68元 | ? | 微信打賞 ¥3.69元 |
| ? |
原創路上, 有您認可, 更為精彩! |
本作品由 Wu Zhangjin 創作,采用 CC BY-NC-ND 4.0 協議 進行許可。未經授權,謝絕商業使用!
轉載于:https://www.cnblogs.com/sky-heaven/p/8615220.html
總結
以上是生活随笔為你收集整理的Cloud Lab: 泰晓实验云台【转】的全部內容,希望文章能夠幫你解決所遇到的問題。