首先安裝docker
sudo apt-get install apt-transport-https sudo apt-get install ca-certificates sudo apt-get install curl sudo apt-get install software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce
建立Dockerfile
建立名為"Dockerfile"的檔案其內容如下
FROM ubuntu:14.04 ENV DEBIAN_FRONTEND noninteractive ENV USER root RUN apt-get update # install required packages reference android source web RUN apt-get install -qq -y git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev RUN apt-get install -qq -y gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip # install jdk for build android 6 RUN apt-get install -qq -y openjdk-7-jdk # install required tools for make RUN apt-get install -qq -y python bc # install other tools for user RUN apt-get install -qq -y vim ctags cscope tig
建立docker image
由Dockerfiler建立image, -t 指定image的名稱與tag, 注意最後有"."sudo docker build -t "build_android:v1" .-t 參數指定image名稱與版本, build_android為image的名稱, v1為版本
查看image id
sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE build_android v1 bdd8752c9904 3 hours ago 724 MB ubuntu 14.04 4a2820e686c4 7 hours ago 188 MB記住image id "bdd8752c9904"
啟動容器container
由image啟動新的容器進入bush, 並掛載/host_dir目錄至容器的/client_dir位置sudo docker run -v /host_dir:/client_dir -it image_id /bin/bashimage_id 為剛剛查看的bdd8752c9904
啟動成功後即進入容器以root身份在bash底下工作
編譯android
在容器環境中/client_dir與host的/host_dir是共通的, 在/host_dir若有存放android source code的目錄例如/host_dir/android_source, 則可在容器中進入/client_dir/android_source目錄進行build android的動作終止容器
只要在bash底下執行exit即終止exit當終止容器回到host時, 可到/host_dir/android_source中取出編譯完android後產出的檔案
進入容器
容器終止後並未消失, 可再次進入, 首先查看終止中的容器sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6ada6575153 bdd8752c9904 "/bin/bash" 3 hours ago Exited (0) About an hour ago elated_panini記住container id "f6ada6575153"
進入容器f6ada6575153
sudo docker start -ia f6ada6575153這樣就可以再次進入容器編譯android了
刪除容器
要刪除的容器須在終止狀態下sudo docker rm container_id
刪除image
要刪除的image必須沒有被容器或其它image使用sudo docker rm image_id
image相關指令
sudo docker build -t "NAME:TAG" . 由Dockerfiler建立image, -t 指定image的名稱與tag, 注意最後有"." sudo docker images 列出所有images sudo docker rmi 刪除image sudo docker save -o ubuntu_14.04.tar ubuntu:14.04 將映像檔從本地倉庫存成檔案 sudo docker load --input ubuntu_14.04.tar 將映像檔檔案載入至本地倉庫
container相關指令
sudo docker container ls 列出執行中的容器 sudo docker ps -a 列出已終止的容器 sudo docker start -ia container_id 啟動終止的容器 sudo docker run -v /host_dir:/client_dir -it image_id /bin/bash 由image啟動新的容器進入bush,並掛載/host_dir目錄至容器的/client_dir位置