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