1. 程式人生 > 其它 >只需搞定Docker,環境問題再也不是測開路上的『坑』

只需搞定Docker,環境問題再也不是測開路上的『坑』

很多做測試的小夥伴,最煩惱的就是環境問題。尤其是windows的測試小夥伴,配置環境變數的時候,那是各種趟坑。每次想要學習新技術時,總是被各種環境問題所困擾,無法開始第一步。

有沒有什麼辦法,可以繞過配置環境變數的坑呢?你別說,還真有。那就是本文要和你介紹的Docker。學會它,讓你再也不需要配置環境變量了,一站式搞定所有的環境。

** Docker能做什麼?**

1、 搭建測試環境,保證測試環境的一致(為什麼?),避免因環境原因造成的互相甩鍋~

2、搭建各類基礎服務,例如禪道,Jenkins等,極大降低學習成本!(不用學習真好~)

3、搭建測試執行環境,例如我們執行自動化測試的環境,隨用隨建,不用即仍

** Docker與虛擬機器的區別**

docker和虛擬機器最大的不同,docker共用宿主機的核心,虛擬機器中每個虛擬機器中有單獨的核心虛擬出來,如上圖所示;

docker不能做後端相容性測試,因為其沒有獨立的虛擬核心。在系統上操作的任何東西都不是直接呼叫核心的,都需要經過系統呼叫,使用docker安裝了作業系統的映象軟體,感覺像是在作業系統上執行,因此即使用的是Centos映象,核心也有可能是Ubantu的,如下圖所示:

** Docker的優缺點**

優點:

  • 輕量級:因為docker不用虛擬化核心,直接共享宿主機的核心,所以節省了很多資源,在同樣的資源下可以啟動更多的軟體,同時啟動速度也更快

缺點:

  • 優點即缺點:docker的優點也是它的缺點,正是因為所有的容器都共享一個核心,如果其中一個容器將核心給"搞壞了",那所有的容器就都無法正常工作了

** Docker的隔離之三項關鍵技術**

1、NameSpace 每啟動一個docker程序就會分配一個網路名稱空間,進行網路的隔離

2、聯合檔案系統 能夠給每一個容器提供單獨的檢視,達到檔案目錄的隔離,這樣就不會訪問到其他容器的檔案

3、Cgroups 資源隔離,限定當前程序使用資源大小,達到資源的隔離

** Docker安裝**

這裡以Mac系統為例,命令和手動都比較簡單,網上教程也很多。可參考:https://www.runoob.com/docker/macos-docker-


install.html

其他系統的可參考,這裡有完整的docker教程 https://www.runoob.com/docker/docker-
tutorial.html。接下來以安裝啟動Jenkins為例,給大家詳細演示

1.下載安裝Jenkins映象

搜尋Docker Hub,或直接訪問hub.docker.com/,這是docker官方的映象網站,無需登入,直接在search中輸入需要搜尋的映象

回車後發現搜尋出了兩萬多個Jenkins映象,我們需要官方的映象,檢查帶有Official的就是官方的映象了

點選進入映象,會有很多相關文件,右邊有安裝的命令“docker pull jenkins”,將命令複製到終端執行即可自動下載安裝Jenkins的官方映象了

注:這裡有一個坑,在這裡預設下載的都是最新的Jenkins映象,但是最新版本很可能出現很多外掛版本不相容的情況,如果出現建議換上經本人實測較為穩定相容的一個版本2.164.3

docker pull jenkins/jenkins:2.164.3  
>

下載安裝好以後可通過docker images命令檢視當前機器中的所有映象

REPOSITORY 表示映象名
TAG 表示映象的版本
IMAGE ID 表示映象的ID,是映象的唯一標識
CREATED 表示映象的建立時間(注意不是我們的下載時間,是當前映象被建立的時間)
SIZE 表示映象的大小

為了證明IMAGE ID是映象的唯一標識,我們可以使用docker tag jenkins myjenkins:5.5命令來為映象jenkins重新打一個tag,打完檢視映象發現多了一個名為myjenkins,tag為5.5的映象,但是檢視IMAGE
ID發現和原來的一樣,其實並有改變

2.Docker常規操作

可以使用docker rmi {映象名}命令將指定映象刪除;注意要用冒號指定映象的版本,如果不寫將預設為`latest```

使用docker ps可檢視當前執行的所有容器(docker ps -s -a 可檢視包括已經退出的和SIZE)

執行docker run -d --name=myjenkins jenkins,將jenkins命名為myjenkins,並在後臺執行容器,我們會得到一段執行碼

想停止容器執行的話可以使用docker stop myjenkins命令,想要刪除容器的話可以使用docker rm -f myjenkins命令(-f作用為刪除正在執行的容器,否則會報錯)

3.啟動Jenkins服務

埠對映:使用命令docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 jenkins啟動Jenkins服務(宿主機埠:容器埠),這段命令的意思是將宿主機以myjenkins命名在後臺執行,並將宿主機的8080埠請求轉發到容器的8080埠上;

命令執行後我們訪問本地的8080埠:

這裡可以看到Jenkins服務已經成功啟動,因為是最新裝的,所以需要Administrator password,這個註冊碼在啟動Jenkins時會產生,我們可以用docker logs -f myjenkins來得到jenkins的啟動執行log,從中找到啟用碼:

4.其他常用Docker命令

作 者

AUTHOR

月關,霍格沃茲測試學院優秀學員。一個在質量保障領域攀登探索的tester,致力於用技術改變身邊人對測試的認識。對Web,介面和APP 自動化均有所涉及。

小編PS:很多小夥伴因為時間原因,經常會錯過了霍格沃茲測試學院的公開課。十二月的第二週,我們給大家帶來了《幣圈關心的案例問題》、《學會K8S+DOCKER,毋需考慮環境問題》,還未報名公開課的小夥伴可點選下方藍色字型『閱讀原文』進行訂閱。

來霍格沃茲測試開發學社,學習更多軟體測試與測試開發的進階技術,知識點涵蓋web自動化測試 app自動化測試、介面自動化測試、測試框架、效能測試、安全測試、持續整合/持續交付/DevOps,測試左移、測試右移、精準測試、測試平臺開發、測試管理等內容,課程技術涵蓋bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相關技術,全面提升測試開發工程師的技術實力

點選獲取更多資訊