公司的线上机器装的是 CentOS 6.3, 系统自带的 gcc 套件版本太老旧(gcc 4.4.7), 我们开发代码已经使用 C++ 11 标准,所以之前在虚拟机的 CentOS 6.3 上编译了 gcc 5.3.
之前一直使用 virtualbox 搭建编译环境, 最近换了超级本, 内存硬盘本来就捉襟见肘. virtual box 环境一共使用了 16GB 硬盘, 2GB 内存, 一跑起来内存和硬盘容量就变得紧张了.
今天用 docker 替换 virtualbox, 磁盘使用不到 4GB, 内存也就跑应用程序的开销, 不用再给 Guest 系统分配什么内存了. 大致操作过程如下:
1. 下载 centos 6.3 镜像
$ docker pull demeternacl/centos-6.3
整个镜像也才不过140MB
2. 拷贝 gcc 5.3 编译环境
把 virtualbox 的 gcc 5.3 编译环境拷贝到宿主机, 因为编译环境的某些文件或目录使用了软链接,
所以在 cp
的时候要加上 cp -L
参数, 把软链接指向的文件或目录也要复制一边, 这回导致某些重复.
也可以选择把编译环境用 tar
打包,然后直接拿到 docker 的 cetnos 环境解压.
这里选择第一种方式.
3. docker centos 安装基本开发环境
启动 docker centos 环境
$ docker run -v /path/to/gcc-5.3:/usr/local/gcc-5.3 -v /path/to/workspace:/root/workspace -u root -w '/root' --name centos-gcc5.3 -it demeternacl/centos-6.3 /bin/bash
安装 Development tools
$ yum install vim-enhanced
$ yum groupinstall 'Development tools'
将 gcc 5.3 的各个目录添加到 shell 的环境变量中(写到 ~/.bashrc)
export PATH="$PATH:/usr/local/gcc-5.3/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/gcc-5.3/lib"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/gcc-5.3/lib64"
alias cd='cd ..'
alias grep='grep --color=auto'
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
接下来可以尝试编译工程代码.
4. 打包镜像分享给其他伙伴
$ docker commit centos-gcc5.3 my:centos-gcc5.3
$ docker save -o centos-gcc5.3.tar my:centos-gcc5.3
接下来可以将这个 tar 分发给其他伙伴使用了(当然还得把 gcc 5.3 的编译一起拷贝).