隨著軟件項目復雜度的提升和不可控的團隊資源變更,研發組織對DevOps部署的靈活性、可快速遷移和適配CI/CD的迭代提出了更高的要求。傳統的虛擬機方案,即模擬出一個完整操作系統,對這類需求顯得力不從心;而輕巧和便捷的容器技術通過在宿主機操作系統上應用虛擬化,直接勝出。本文主要介紹容器技術的代表產品Docker,并對Docker與虛擬機進行對比,以及如何在Windows上應用Docker開展動態代碼測試和實現與Jenkins的持續集成。
1
Docker簡介
Docker是一組PaaS(Platform as a Service,平臺即服務)產品,通過操作系統層級的虛擬化提供稱為容器的打包軟件服務。Docker起源自2008年在巴黎初創的dotCloud公司,后于美國進行孵化和注冊,于2013年3月宣布遵從Apache2.0協議開源,同年9月正式更名為Docker,次年在0.9版本上用Go語言編寫的libcontainer組件替代了LXC(Linux Container)。
Docker可以讓開發者基于選定的鏡像(Image),打包目標應用以及依賴包到一個輕量級、可移植的容器(Container)中,并通過客戶端的docker命令實現對Docker主機內容器的操控;當前容器也可創建成新的鏡像,而所有鏡像都存放在倉庫(Registry)中,類似GitHub一樣分為共有倉庫和私有倉庫。
2
容器技術與虛擬機的比較
容器和虛擬機雖然都使用虛擬化技術,但容器(圖2)并不是模擬一個完整的操作系統,而是在宿主機操作系統上應用虛擬化技術;勝在“輕巧”,可實現軟件應用的秒級啟動和響應。相比而言,虛擬機冗余步驟多、啟動太慢、占用內存硬盤資源,過于笨重。
此外,容器彼此間互相隔離,可通過預定渠道進行通信(即共享宿主機的操作系統)。基于鏡像可便捷地創建容器和分發構建環境,契合DevOps和敏捷開發等對快速部署和應用的需求。
3
Windows上使用Docker運行
VectorCAST
Windows上Docker安裝信息可參照:
https://docs.docker.com/desktop/windows/install/
3.1 運行帶GUI的Ubuntu鏡像,創建并啟動容器
鏡像使用參照https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc/
docker run -p 6080:80 -v D:DockerData:/dev/shm --name ubuntu-desktop dorowu/ubuntu-desktop-lxde-vnc:xenial
參數解析
docker,Docker的二進制執行文件。
run,與前面的docker組合來運行一個容器。
-p,指端口綁定。
-v,設定共享目錄,為了將安裝包保存到容器中,需要指定目錄。D:DockerData指本地目錄,可以自定義;/dev/shm是指容器中的目錄。將需要復制到容器中的文件放置到D:DockerData中,在容器中就可以進入/dev/shm來訪問這些文件。
–name,設定容器名稱,如不指定,則設置一個隨機生成的名字。
:xenial,指定鏡像的版本,如不指定,則默認使用最新版本。
dorowu/ubuntu-desktop-lxde-vnc:xenial,指定要運行的鏡像,Docker 首先從本地主機上查找鏡像是否存在,如果不存在,Docker就會從鏡像倉庫Docker Hub下載公共鏡像。
上述命令完整的意思可以解釋為:Docker以dorowu/ubuntu-desktop-lxde-vnc:xenial鏡像創建一個名為ubuntu-desktop的容器,指定端口6080:80進行通信,指定D:DockerData以及/dev/shm為Windows和Ubuntu的共享目錄。
3.2 在容器中安裝并使用VectorCAST
a.
在瀏覽器中打開http://127.0.0.1:6080/,進入Ubuntu的桌面界面,打開命令行。
b.
進入/dev/shm目錄找到在Windows的D:DockerData下存放的VectorCAST安裝文件,并按Linux下的安裝方法常規安裝以及配置,在此不作贅述。
*若提示找不到命令時(鏡像未安裝),可執行apt update以及apt install命令進行安裝即可。
c.
運行VectorCAST,確認獲取到License。
d.
創建環境并執行測試用例。
3.3 基于已有容器創建私有鏡像
為實現工具安裝的快速部署和避免依賴包可能導致的不兼容問題,在安裝VectorCAST的容器基礎上創建私有鏡像提交至本地并打包,即可通過推送或分發達成需求。
a.
docker images查看現有鏡像:
b.
docker ps查看在運行中的容器:
此容器已經安裝了VectorCAST,在此基礎上創建鏡像。Commit命令需要使用這里的紅框內容器ID。
c.
docker commit創建鏡像,并用docker images查看已創建的鏡像myubuntu:2.0:
docker commit -m “create ubuntu with VectorCAST installed” -a “vector” e94998fcde2f myubuntu:2.0
d.
基于創建的新鏡像創建容器并啟動:
docker run -p 6081:80 --name ubuntu_new myubuntu:2.0
e.
進入Ubuntu桌面,確認容器中有已安裝好的VectorCAST:
f.
Docker save打包鏡像至tar文件,可以拷貝至其他宿主機使用:
docker save -o my_ubuntu_v2.tar 919c1693ccee
4
Jenkins + Docker實現CI/CD
Docker為DevOps提供了很好的基礎支撐:
輕量。可以快速啟動和部署一個復雜的開發環境;
通過編寫Dockerfile可以將業務容器化。將Dockerfile提交到代碼倉庫中,在持續集成的過程中基于已有的Dockerfile來構建鏡像 ,極大提升持續集成的構建速度;
鏡像倉庫使分發變得十分簡單。當鏡像構建完成后,無論在哪里只需要執行docker pull命令就可以快速地將鏡像拉取到本地并且啟動應用。
接下來介紹從Jenkins Pipeline中啟動Docker容器,運行VectorCAST測試環境并生成測試報告的過程。
4.1 編寫測試腳本
在容器中編寫運行VectcorCAST測試工程的腳本start_vcast_cmd.sh,后續會在Pipeline中調用此腳本:
4.2 宿主機上創建Jenkins Pipeline
jenkins_run_docker.bat文件中主要執行開啟容器以及運行容器中事先準備的腳本start_vcast_cmd.sh:
4.3 構建Pipeline并查看報告
共享目錄中生成了測試報告Full_Status.html,用戶可以在宿主機上進行查看:
4.4 引入看板工具Squore分析測試結果
看板管理工具Squore可以在Jenkins Pipeline中進行部署和配置,自動導入VectorCAST測試結果進行分析,以便用戶直觀地查看代碼質量和趨勢分析,實現對項目管理和決策的優化。
責任編輯:haq
-
WINDOWS
+關注
關注
3文章
3541瀏覽量
88623 -
容器
+關注
關注
0文章
495瀏覽量
22060 -
代碼
+關注
關注
30文章
4779瀏覽量
68524
原文標題:Windows上應用Docker容器技術的動態代碼測試
文章出處:【微信號:VectorChina,微信公眾號:Vector維克多】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論