張皓瑜,吳合力,張雨平
(四川旅游學院,四川 成都 610100)
目前在云計算技術的高速發(fā)展的背景下,高校對于容器化技術培養(yǎng)的課程主要依賴于“授課為主,實驗為輔”的教學方式。在實驗環(huán)節(jié),避免不了需要學生搭建Docker 相關的實驗環(huán)境,并且在Docker 環(huán)境搭建之前,還需要學生完成Linux 虛擬機的安裝,那么對于學生而言,在實驗教學環(huán)節(jié)中,Docker 環(huán)境搭建困難、配置復雜、效果差、資源占用多等諸多問題都會降低學生對于該課程的學習效率,那么針對以上出現(xiàn)的各類問題,Docker 的在線實驗教學可以很大程度上有效解決。
從DockerCon 2017 會議之后,Marcos Nils 和 Jonathan Leibiusky 決定共同打造一款可以在瀏覽器上幫助大家學習Docker 的產品,PWD(Play With Docker)便由此誕生,PWD 是一種利用云主機搭建的實驗環(huán)境,具有簡便性、開源性、搭建即用的特點,Docker 在線實驗便是基于PWD 進行開發(fā)的實驗教學平臺,學生用戶可以進行拉取鏡像、構建容器、運行Docker 容器等Docker 命令相關的操作,甚至可以在實驗平臺借助于Docker Swarm 技術搭建集群。Docker在線實驗平臺借助于LXC(Linux container)內核虛擬化技術和AUFS(advance multi-layered unification filesystem)分層鏡像方法,可以在幾乎沒有額外開銷的前提下提供資源隔離的應用運行環(huán)境,并且具有啟動速度快和資源占用少的優(yōu)點。一臺普通服務器能夠運行數百個容器(container)。
Docker 是一種開源的高級虛擬化技術引擎,讓開發(fā)者可以打包業(yè)務相關的應用以及依賴到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux 或Windows 操作系統(tǒng)的機器上。Docker 所擁有的高度隔離性、高效率、高資源利用率、強擴展性、輕量等特點,極大地減少了用戶成本,滿足了用戶各式各樣的環(huán)境配置需求。
Docker 虛擬化技術有三大核心基礎概念:容器(Container),鏡像(Image),倉庫(Repository)
(1)容器(Container):Docker 每運行一個輕量進程都與其他進程互不干擾,可以理解為就像一個個小的盒子,因此稱之為容器,容器是完全使用沙箱機制,相互之間不會有任何接口,籠統(tǒng)一點的表現(xiàn)方式就是盒子與盒子之間相互隔離,互不干涉。
(2)鏡像(Image):用戶可以在容器中,添加新的環(huán)境,搭配新的配置,放入容器中,進行打包再次整合為一個新的鏡像,鏡像是一種特殊的文件存儲方式以及不一樣的冗余類型,可以把一個鏡像看成一個完整磁盤的副本。Docker虛擬化技術里面,啟用Docker 容器的基礎便是鏡像,鏡像中包含了各式各樣容器必備的程序和相關配置環(huán)境,同時,開發(fā)人員也可以自己定義容器相關的程序以及環(huán)境,并且,用戶也很容易通過互聯(lián)網下載他人分享的鏡像文件,通過簡單的命令創(chuàng)建所需的容器。
(3)倉庫(Repository):顧名思義,存放物品的地方,這里的物品指的便是鏡像,所以也稱之為鏡像倉庫,它采用一種集中式的存放方式,每當用戶需要相關鏡像時,只需從中直接使用。同時,每個用戶都擁有自己獨立的鏡像倉庫,也可以把自己的鏡像上傳進鏡像倉庫中,用戶倉庫中的鏡像可以選擇性的對外開放,對于初學者而言,十分簡單,快捷,只需輸入幾條簡單的拉取鏡像命令便能從其他用戶倉庫中直接拉取相應的鏡像。
客戶端可以通過瀏覽器訪問Docker 在線實驗平臺,當客戶開啟一個實驗室(Create a new instance),終端會給客戶端一個獨立的Session,每一個客戶端都有一個獨立的URL。在線實驗室的工作環(huán)境,其實是一個獨立的鏡像(Image)開啟的容器(Container),其背后設計到的技術便是Dind(Docker in Docker),完成實驗室開啟后,便能正常使用Docker 環(huán)境,進行實驗教學任務。Docker 在線實驗平臺提供了一個非常方便的實驗環(huán)境,用戶不僅僅可以嘗試學習Docker 技術,還可以快速創(chuàng)建服務節(jié)點,無需安裝SSH 客戶端,自動實現(xiàn)打開外部服務端口,并且提供一鍵搭建集群的功能,高效的完成教學任務。Docker 在線實驗教學平臺示意圖如圖1所示。
圖1 Docker 在線實驗平臺示意圖
在部署相關后臺系統(tǒng)時,可預先在云服務器搭建好后臺系統(tǒng)所需要的Mysql 數據庫、Redis 服務器等相關環(huán)境,以便更加方便、快捷的練習,在實際的操作生產過程中,可以使用Docker-compose 進行相關環(huán)境的搭建,Docker-compose可以籠統(tǒng)理解為一個yml 的腳本文件,以下實驗步驟是以部署旅游景區(qū)后臺管理系統(tǒng)來進行研究,僅提供參考練習。
2.2.1 利用Docker-compose 創(chuàng)建Mysql 容器
在root 目錄下創(chuàng)建docker,通過mkdir docker 命令,在docker 目錄下創(chuàng)建mysql,通過mkdirmysql 命令,創(chuàng)建docker-compose.yml 文件,使用vim docker-compose.yml 命令,編寫docker-compose 文件進行相關環(huán)境的配置,創(chuàng)建完成使用守護式運行的方式docker-compose up -d 進行啟動。創(chuàng)建Mysql 容器部分命令如圖2所示。
圖2 創(chuàng)建MySQL 容器命令
2.2.2 利用docker-compose 創(chuàng)建redis 容器
在docker 目錄下創(chuàng)建redis,通過mkdirredis 命令,同時創(chuàng)建docker-compose.yml 文件,使用vim docker-compose.yml 進行編寫相關的環(huán)境配置,文件創(chuàng)建完成dockercompose up -d 進行啟動,配置命令如圖3所示。
圖3 創(chuàng)建Redis 容器命令
2.2.3 后臺管理程序與后臺程序打包docker
容器創(chuàng)建成功后,還須將后臺管理程序與數據庫建立連接,之后即可將整個程序進行打包,在項目打包前須將項目中需要引用后端程序的地方改成服務器地址及相應端口。后臺程序與數據庫連接配置如圖4所示。
圖4 后臺系統(tǒng)配置文件
2.2.4 在云端創(chuàng)建java、nginx 容器
項目的發(fā)布可依賴Nginx 實現(xiàn),需要先創(chuàng)建Nginx 容器。將打包好的后臺管理系統(tǒng)放在Nginx 服務器的HTML目錄內,配置nginx.conf 文件,完成Nginx 代理的配置。配置Nginx 文件如圖5所示。
圖5 配置Nginx.conf 文件
之后配置dockerfile 與docker-compose 文件,便可使用docker-compose up -d 命令基于docker 運行項目。
2.2.5 訪問端口測試
旅游景區(qū)后臺管理系統(tǒng)部署完成以后,可以通過之前配置的服務器地址與端口進行訪問,打開配置的瀏覽器,測試平臺運行是否正常。如圖6所示。
圖6 旅游景區(qū)后臺管理系統(tǒng)頁面
以容器化技術為核心的Docker 引領了一場影響了整個IT界的技術革新,不僅在徹底改變著應用開發(fā)和發(fā)布的方式,同時改變著云計算領域的運行規(guī)則,并且以Docker 技術為代表的容器技術漸漸成為微服務架構實現(xiàn)過程中的重要手段,通過Docker 在線實驗平臺,能讓學生更加充分、細致的了解到Docker 虛擬化技術的核心,并且借助于Docker本身具有的高效,輕便,可移植的特性,極大的減小了學生的學習成本,提高了學生的專業(yè)技術,有效的鍛煉了學生的學習思維。
利用Docker 在線實驗平臺,充分體現(xiàn)了學?!耙越虒W為主,實驗為輔”的教學經驗思想,同時增加了老師的教學效果,提高學生的學習興趣,并且在如今應用本身的發(fā)展背景下,Docker 在業(yè)界的廣泛應用,很可能成為應用市場的標準化,利用Docker 在線實驗平臺的教學,不僅僅增強了學生的專業(yè)知識技能,同時也能讓學生提前了解行業(yè),提高了學生的就業(yè)概率。