Docker

来源:互联网 发布:大数据解决方案 编辑:程序博客网 时间:2024/05/21 22:30

ubuntu 编译aosp必备
不过大家也知道ubuntu 桌面一直稳定性比较弱
之前一直使用debian 稳定性还是很高的,基本上可以一年开两次机器,一次开半年!

随着android 版本的不断增多,一个单一的ubuntu 14.04也不足一满足所有的android 版本编译
你仍然需要在openjdk 7\openjdk 8\jdk 6\jdk 7几个版本不断切换,带来了很多的不确定性
直接修改debian或者自己喜欢的Linux 发行版的各种开源工具的版本,也不太现实,各种依赖
安装不同版本ubuntu 的虚拟机也可以,但是太麻烦,需要占用很多空间\安装一个版本需要配置一次环境\编译AOSP速度太慢各种问题

救世主 Docker .
一次扫清你所有的烦恼

持续交付和部署,轻量级虚拟化.完美!

名词解释:
镜像
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
容器
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

不管你是什么版本的linux发行版,实现AOSP编译只需要3步
1.安装docker
2.启动容器(如果容器没有会自动下载的,需要花一点时间)
3.启动编译
没错就是这么简单

实际例子,我用的是debian 8.0
1.安装
https://docs.docker.com/engine/installation/linux/docker-ce/debian/
执行几个命令即可
2.我自己做了一些android 版本的镜像
启动android-n版本的容器(镜像的实例)
        文件系统映射到容器       容器的名字  镜像的名字       
sudo docker run -v /home/zhangzhao/:/var/aosp -i -t –name android-n   green369258/aosp:android-n bash
同时我还有 m l kk各种编译环境的镜像
sudo docker run -v /home/zhangzhao/:/var/aosp -i -t –name android-m green369258/aosp:android-m bash
sudo docker run -v /home/zhangzhao/:/var/aosp -i -t –name android-l green369258/aosp:android-l bash
sudo docker run -v /home/zhangzhao/:/var/aosp -i -t –name android-kk green369258/aosp:android-kk bash

上面的例子中我把本机的 /home/zhangzhao/这个目录映射到了虚拟机的/var/aosp 这个目录
启动后你就可以/var/aosp 这里查看你本机的任何文件
3.启动容器(镜像的实例)后你就可以
直接进入你下载好的AOSP路径,执行. build/envsetup.sh lunch 执行make systemimage的操作了
唯一有点不好的是每次不像在本机任何终端都可以,这个需要启动容器的终端才可以

几个操作
1.查看本机的所有镜像
sudo docker images
2.查看本机的所有容器
sudo docker container ps -a
3.启动已经下载好的容器
sudo docker start -i -a android-l

Docker可以做的事情有很多,比如说你启动一个apache服务器,基本上也是一个命令搞定,而且不破坏自己的本机环境.
还有一个优点是和别人环境可以做到一模一样,持续集成!
我已經使用超过1个月的docker编译AOSP了,完全没有很慢的感觉,使用debian,也没有了ubuntu full build几次后整机io性能下降的问题了!推荐大家使用
参考:
 https://yeasy.gitbooks.io/docker_practice/