前言:目前因為需要在android10,11各版本測試cts,而兩個android版本所需要的環境略有不一樣,故嘗試使用docker來隔離環境,後續更新只需要將cts和所需要的工具版本替換重新構建即可,提高測試環境布置效率
主要需要工具
android-sdk
jdk11
cts工具包
這裡要注意cts主要用到android-sdk內的「build-tools」和「 platform-tools 」內的工具,保留這兩個即可,盡量保證映象不會過大
我剛開始建立沒有去除其它工具構建的映象有10g以上
#新建dockerfile目錄,並將需要的工具包複製到建立的目錄內
mkdir dtest
#建立dockerfile
vim dockerfile
# dockerfile 內容
from ubuntu
copy ./sdk /sdk
copy ./android-cts/ /android-cts/
copy ./jdk-11.0.9/jdk11/ /jdk11/
copy ./runcts.sh /runcts.sh
# 配置環境變數
env path /sdk/platform-tools/:/sdk/build-tools/30.0.2/:/jdk11/bin/:$path
# 配置執行結果目錄,用來將執行結果對映到宿主機,便於檢視
# 需要在宿主機建立logs和results目錄
volume [
"/android-cts/logs/","/android-cts/results/"
]entrypoint [
"/runcts.sh"
]
就是進入到cts的執行檔案目錄下,執行這個檔案
#!/bin/bash
cd /android-cts/tools
./cts-tradefed
#需要到dokcerfile 所在目錄執行
docker build --tag cts:1.0 .
# 構建過程
sending build context to docker daemon 4.724gb
step 1/8 : from ubuntu
---> f643c72bc252
step 2/8 : copy ./sdk /sdk
---> using cache
---> 64137f05ac89
step 3/8 : copy ./android-cts/ /android-cts/
---> using cache
---> 232d67609126
step 4/8 : copy ./jdk-11.0.9/jdk11/ /jdk11/
---> using cache
---> 38849642f89f
step 5/8 : copy ./runcts.sh /runcts.sh
---> using cache
---> d223a8f67ecb
step 6/8 : env path /sdk/platform-tools/:/sdk/build-tools/30.0.2/:/jdk11/bin/:$path
---> using cache
---> 23c31545a689
step 7/8 : volume [
"/android-cts/logs/","/android-cts/results/"
] ---> using cache
---> 7a648886e29a
step 8/8 : entrypoint [
"/runcts.sh"
] ---> using cache
---> c977d872cf7a
successfully built c977d872cf7a
successfully tagged cts:1.0
# --privileged 這個引數一定要加,否則adb無法識別到裝置
# -v 是將測試產生的log和result對映到宿主機
# 執行時不要加 -d ,直接進入cts的執行介面
docker run -it --name cts --privileged -p 5037:5037 -v /home/mchen/tmp/logs/:/android-cts/logs/ -v /home/mchen/tmp/results/:/android-cts/results/ cts:1
docker start cts
docker exec -it cts /bin/bash/
dockerfile構建映象
尋找官方映象的dockerfile 在hub.docker.com 中,輸入映象的名字,往下拉就能找到跳轉到dockerfile的鏈結。下圖是centos的dockerfile from scratch maintainer the centos project add c68 docker.tar...
Dockerfile構建映象
docker映象是由 件系統疊加 成的,系統的最底層是 bootfs,相當於就是linux核心的引導 件系統 接下來第 層是rootfs,這 層可以是 種或多種操 作系統 如debian或ubuntu 件系統 docker中的rootfs是唯讀狀態的 docker利 聯合掛載技 術將各層 件系統疊加...
Dockerfile構建映象
mkdir dockerfile3 cd dockerfile3 touch dockerfile 在這個例子裡,我們通過run指令更新了已經安裝的apt倉庫,安裝了nginx包。之後將 hi,i am in your container 寫入 var www html index.nginx de...