0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Windows上應(yīng)用Docker開展動態(tài)代碼測試

Vector維克多 ? 來源:Vector維克多 ? 作者:Vector China ? 2021-10-28 11:08 ? 次閱讀

隨著軟件項(xiàng)目復(fù)雜度的提升和不可控的團(tuán)隊(duì)資源變更,研發(fā)組織對DevOps部署的靈活性、可快速遷移和適配CI/CD的迭代提出了更高的要求。傳統(tǒng)的虛擬機(jī)方案,即模擬出一個(gè)完整操作系統(tǒng),對這類需求顯得力不從心;而輕巧和便捷的容器技術(shù)通過在宿主機(jī)操作系統(tǒng)上應(yīng)用虛擬化,直接勝出。本文主要介紹容器技術(shù)的代表產(chǎn)品Docker,并對Docker與虛擬機(jī)進(jìn)行對比,以及如何在Windows上應(yīng)用Docker開展動態(tài)代碼測試和實(shí)現(xiàn)與Jenkins的持續(xù)集成。

1

Docker簡介

Docker是一組PaaS(Platform as a Service,平臺即服務(wù))產(chǎn)品,通過操作系統(tǒng)層級的虛擬化提供稱為容器的打包軟件服務(wù)。Docker起源自2008年在巴黎初創(chuàng)的dotCloud公司,后于美國進(jìn)行孵化和注冊,于2013年3月宣布遵從Apache2.0協(xié)議開源,同年9月正式更名為Docker,次年在0.9版本上用Go語言編寫的libcontainer組件替代了LXC(Linux Container)。

Docker可以讓開發(fā)者基于選定的鏡像(Image),打包目標(biāo)應(yīng)用以及依賴包到一個(gè)輕量級、可移植的容器(Container)中,并通過客戶端的docker命令實(shí)現(xiàn)對Docker主機(jī)內(nèi)容器的操控;當(dāng)前容器也可創(chuàng)建成新的鏡像,而所有鏡像都存放在倉庫(Registry)中,類似GitHub一樣分為共有倉庫和私有倉庫。

2

容器技術(shù)與虛擬機(jī)的比較

容器和虛擬機(jī)雖然都使用虛擬化技術(shù),但容器(圖2)并不是模擬一個(gè)完整的操作系統(tǒng),而是在宿主機(jī)操作系統(tǒng)上應(yīng)用虛擬化技術(shù);勝在“輕巧”,可實(shí)現(xiàn)軟件應(yīng)用的秒級啟動和響應(yīng)。相比而言,虛擬機(jī)冗余步驟多、啟動太慢、占用內(nèi)存硬盤資源,過于笨重。

此外,容器彼此間互相隔離,可通過預(yù)定渠道進(jìn)行通信(即共享宿主機(jī)的操作系統(tǒng))?;阽R像可便捷地創(chuàng)建容器和分發(fā)構(gòu)建環(huán)境,契合DevOps和敏捷開發(fā)等對快速部署和應(yīng)用的需求。

3

Windows上使用Docker運(yùn)行

VectorCAST

Windows上Docker安裝信息可參照:

https://docs.docker.com/desktop/windows/install/

3.1 運(yùn)行帶GUI的Ubuntu鏡像,創(chuàng)建并啟動容器

鏡像使用參照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

參數(shù)解析

docker,Docker的二進(jìn)制執(zhí)行文件。

run,與前面的docker組合來運(yùn)行一個(gè)容器。

-p,指端口綁定。

-v,設(shè)定共享目錄,為了將安裝包保存到容器中,需要指定目錄。D:DockerData指本地目錄,可以自定義;/dev/shm是指容器中的目錄。將需要復(fù)制到容器中的文件放置到D:DockerData中,在容器中就可以進(jìn)入/dev/shm來訪問這些文件。

–name,設(shè)定容器名稱,如不指定,則設(shè)置一個(gè)隨機(jī)生成的名字。

:xenial,指定鏡像的版本,如不指定,則默認(rèn)使用最新版本。

dorowu/ubuntu-desktop-lxde-vnc:xenial,指定要運(yùn)行的鏡像,Docker 首先從本地主機(jī)上查找鏡像是否存在,如果不存在,Docker就會從鏡像倉庫Docker Hub下載公共鏡像。

上述命令完整的意思可以解釋為:Docker以dorowu/ubuntu-desktop-lxde-vnc:xenial鏡像創(chuàng)建一個(gè)名為ubuntu-desktop的容器,指定端口6080:80進(jìn)行通信,指定D:DockerData以及/dev/shm為Windows和Ubuntu的共享目錄。

3.2 在容器中安裝并使用VectorCAST

a.

在瀏覽器中打開http://127.0.0.1:6080/,進(jìn)入U(xiǎn)buntu的桌面界面,打開命令行。

b.

進(jìn)入/dev/shm目錄找到在Windows的D:DockerData下存放的VectorCAST安裝文件,并按Linux下的安裝方法常規(guī)安裝以及配置,在此不作贅述。

*若提示找不到命令時(shí)(鏡像未安裝),可執(zhí)行apt update以及apt install命令進(jìn)行安裝即可。

c.

運(yùn)行VectorCAST,確認(rèn)獲取到License。

d.

創(chuàng)建環(huán)境并執(zhí)行測試用例。

3.3 基于已有容器創(chuàng)建私有鏡像

為實(shí)現(xiàn)工具安裝的快速部署和避免依賴包可能導(dǎo)致的不兼容問題,在安裝VectorCAST的容器基礎(chǔ)上創(chuàng)建私有鏡像提交至本地并打包,即可通過推送或分發(fā)達(dá)成需求。

a.

docker images查看現(xiàn)有鏡像:

b.

docker ps查看在運(yùn)行中的容器:

此容器已經(jīng)安裝了VectorCAST,在此基礎(chǔ)上創(chuàng)建鏡像。Commit命令需要使用這里的紅框內(nèi)容器ID。

c.

docker commit創(chuàng)建鏡像,并用docker images查看已創(chuàng)建的鏡像myubuntu:2.0:

docker commit -m “create ubuntu with VectorCAST installed” -a “vector” e94998fcde2f myubuntu:2.0

d.

基于創(chuàng)建的新鏡像創(chuàng)建容器并啟動:

docker run -p 6081:80 --name ubuntu_new myubuntu:2.0

e.

進(jìn)入U(xiǎn)buntu桌面,確認(rèn)容器中有已安裝好的VectorCAST:

f.

Docker save打包鏡像至tar文件,可以拷貝至其他宿主機(jī)使用:

docker save -o my_ubuntu_v2.tar 919c1693ccee

4

Jenkins + Docker實(shí)現(xiàn)CI/CD

Docker為DevOps提供了很好的基礎(chǔ)支撐:

輕量??梢钥焖賳雍筒渴鹨粋€(gè)復(fù)雜的開發(fā)環(huán)境;

通過編寫Dockerfile可以將業(yè)務(wù)容器化。將Dockerfile提交到代碼倉庫中,在持續(xù)集成的過程中基于已有的Dockerfile來構(gòu)建鏡像 ,極大提升持續(xù)集成的構(gòu)建速度;

鏡像倉庫使分發(fā)變得十分簡單。當(dāng)鏡像構(gòu)建完成后,無論在哪里只需要執(zhí)行docker pull命令就可以快速地將鏡像拉取到本地并且啟動應(yīng)用。

接下來介紹從Jenkins Pipeline中啟動Docker容器,運(yùn)行VectorCAST測試環(huán)境并生成測試報(bào)告的過程。

4.1 編寫測試腳本

在容器中編寫運(yùn)行VectcorCAST測試工程的腳本start_vcast_cmd.sh,后續(xù)會在Pipeline中調(diào)用此腳本:

4.2 宿主機(jī)上創(chuàng)建Jenkins Pipeline

jenkins_run_docker.bat文件中主要執(zhí)行開啟容器以及運(yùn)行容器中事先準(zhǔn)備的腳本start_vcast_cmd.sh:

4.3 構(gòu)建Pipeline并查看報(bào)告

共享目錄中生成了測試報(bào)告Full_Status.html,用戶可以在宿主機(jī)上進(jìn)行查看:

4.4 引入看板工具Squore分析測試結(jié)果

看板管理工具Squore可以在Jenkins Pipeline中進(jìn)行部署和配置,自動導(dǎo)入VectorCAST測試結(jié)果進(jìn)行分析,以便用戶直觀地查看代碼質(zhì)量和趨勢分析,實(shí)現(xiàn)對項(xiàng)目管理和決策的優(yōu)化。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    3

    文章

    3503

    瀏覽量

    87876
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    21986
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4670

    瀏覽量

    67760

原文標(biāo)題:Windows上應(yīng)用Docker容器技術(shù)的動態(tài)代碼測試

文章出處:【微信號:VectorChina,微信公眾號:Vector維克多】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Jtti:Docker會替代調(diào)虛機(jī)嗎

    嗎? 答案:不會。 原因:是有些遺留應(yīng)用是運(yùn)行在windows系統(tǒng)的。有些應(yīng)用可以直接遷移到虛擬,但是不能直接在容器中運(yùn)行。現(xiàn)在得趨勢是虛擬機(jī)和容器同時(shí)發(fā)展。容器的優(yōu)點(diǎn)是敏捷性和高性能。而虛擬機(jī)的優(yōu)點(diǎn)是更強(qiáng)的隔離性和運(yùn)維的簡
    的頭像 發(fā)表于 07-12 14:38 ?141次閱讀
    Jtti:<b class='flag-5'>Docker</b>會替代調(diào)虛機(jī)嗎

    求助,請問如何在Windows系統(tǒng)安裝ESP-IDF?具鏈?

    求助,請問如何在Windows系統(tǒng)安裝ESP-IDF?具鏈?
    發(fā)表于 07-09 06:28

    請問如何在Windows(Msys)設(shè)置NONOS系統(tǒng)?

    何在Windows(Msys)設(shè)置NONOS系統(tǒng)?
    發(fā)表于 07-08 08:29

    關(guān)于Docker 的清理命令集錦

    這篇文章主要介紹了Docker 清理命令集錦,需要的朋友可以參考下 復(fù)制代碼代碼如下: docker kill $(docker ps -a
    的頭像 發(fā)表于 06-13 15:56 ?203次閱讀

    何在代碼動態(tài)修改手指電容?

    何在代碼動態(tài)修改手指電容
    發(fā)表于 05-22 07:11

    ARM平臺實(shí)現(xiàn)Docker容器技術(shù)

    什么是Docker? (1)Docker的架構(gòu) Docker是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows
    的頭像 發(fā)表于 03-07 13:48 ?563次閱讀
    ARM平臺實(shí)現(xiàn)<b class='flag-5'>Docker</b>容器技術(shù)

    何在測試中使用ChatGPT

    Dimitar Panayotov 在 2023 年 QA Challenge Accepted 大會 分享了他如何在測試中使用 ChatGPT。
    的頭像 發(fā)表于 02-20 13:57 ?642次閱讀

    Nginx在Windows/docker中的使用

    nginx 是一個(gè)高性能的開源反向代理服務(wù)器和 web 服務(wù)器,一般用來搭建靜態(tài)資源服務(wù)器、負(fù)載均衡器、反向代理,本文將分享其在 Windows/docker 中的使用,使用 nssm 部署成服務(wù)的方案腳本,局域網(wǎng)中自定義域名解決https提示不安全的解決方案,以及一路踩
    的頭像 發(fā)表于 01-03 10:20 ?1360次閱讀
    Nginx在<b class='flag-5'>Windows</b>/<b class='flag-5'>docker</b>中的使用

    Windows Docker部署Redis的流程

    由于 Docker 部署 Redis 后,Redis 容器中默認(rèn)是沒有 redis.conf 配置文件的,需要自己手動掛在進(jìn)去。
    的頭像 發(fā)表于 11-27 10:02 ?716次閱讀
    <b class='flag-5'>Windows</b> <b class='flag-5'>Docker</b>部署Redis的流程

    如何啟動本機(jī)docker服務(wù)

    Docker是一個(gè)開源項(xiàng)目,可以幫助開發(fā)者打包應(yīng)用程序及其依賴,并且能夠?qū)⑵渥鳛楠?dú)立的容器來運(yùn)行。本文將詳細(xì)介紹如何在本機(jī)上啟動Docker服務(wù)。 第一步:安裝Docker 在開始之前
    的頭像 發(fā)表于 11-23 09:43 ?1479次閱讀

    linux關(guān)閉docker的命令

    在 Linux 系統(tǒng)中,關(guān)閉 Docker 的操作可以通過以下多種方式進(jìn)行。本文將詳細(xì)講解每一種方式,并提供示例代碼和命令,以幫助讀者更好地理解和實(shí)踐。 使用 docker 命令 最常用的方法
    的頭像 發(fā)表于 11-23 09:39 ?2365次閱讀

    linux docker安裝部署

    了解如何在Linux安裝和部署Docker。 一、安裝Docker 在開始之前,請確保您的Linux系統(tǒng)滿足以下要求: 64位版本的Linux操作系統(tǒng),包括Ubuntu、CentOS
    的頭像 發(fā)表于 11-23 09:27 ?857次閱讀

    何在Windows系統(tǒng)設(shè)置Docker鏡像源

    在使用 Docker 進(jìn)行鏡像下載和構(gòu)建時(shí),由于眾所周知的原因,國內(nèi)用戶可能會遇到下載速度慢或者無法連接的問題。為了解決這個(gè)問題,我們可以使用國內(nèi)的鏡像源來加速下載速度。本文將介紹如何在 Windows 系統(tǒng)
    的頭像 發(fā)表于 10-24 16:55 ?4792次閱讀

    使用Docker容器編譯OK3568源代碼

    經(jīng)常編譯系統(tǒng),又免不了搭建各種開發(fā)環(huán)境,所以為了不對開發(fā)主機(jī)的環(huán)境有影響,使用Docker容器編譯代碼是比較方便和省心的方式。 編譯OK3568的源代碼,需要用Ubunut 18.04版本,我的開發(fā)
    發(fā)表于 10-19 10:36

    VectorCAST|Docker場景下的代碼白盒測試實(shí)施

    的Linux或Windows操作系統(tǒng)的機(jī)器,并可以無需再次進(jìn)行配置便完美執(zhí)行。Docker容器是使用的沙箱機(jī)制,任何容器之間的創(chuàng)建、運(yùn)行和關(guān)閉不會相互影響,相互之間
    的頭像 發(fā)表于 10-10 10:04 ?913次閱讀
    VectorCAST|<b class='flag-5'>Docker</b>場景下的<b class='flag-5'>代碼</b>白盒<b class='flag-5'>測試</b>實(shí)施