Ubuntu 12.04上享用新版本Linux的功能
我司有一批Ubuntu 12.04的服務器暫時沒有升級計劃,但是像編譯Android N代碼等需求要求Linux的版本更新只泼。
如何在不升級Ubuntu 12.04的情況下實現(xiàn)升級Linux版本的需求呢粉渠?我們有兩大利器可以使用:docker和虛擬機轻腺。
Docker大法
Docker安裝
升級內(nèi)核
Docker需要64位的Linux支持龟劲,幸好琳疏,這條是滿足的洒琢。
Docker需要kernel 3.10以上版本的支持察纯。
首先我們查看一下當前的kernel版本號:
uname -r
我的是3.2.0-60-generic帕棉,升級吧:
sudo apt-get update
sudo apt-get install linux-image-generic-lts-trusty
sudo reboot
重啟之后再看,kernel已經(jīng)升級到3.13.0-105-generic饼记,終于符合要求了香伴。
升級apt源
首先使用https傳輸和ca認證:
sudo apt-get install apt-transport-https ca-certificates
然后添加GPG密鑰:
sudo apt-key adv \
--keyserver hkp://ha.pool.sks-keyservers.net:80 \
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D
接著將"deb https://apt.dockerproject.org/repo ubuntu-precise main"這一行,添加到/etc/apt/sources.list文件的最后一行具则。
最后即纲,更新索引:
sudo apt-get update
安裝docker
經(jīng)過前面一系列準備工作,終于可以安裝docker了:
sudo apt-get install docker-engine
啟動docker
安裝成功后乡洼,docker服務應該已經(jīng)啟動了崇裁。如果沒有啟動,就運行下面的命令:
sudo service docker start
大功告成了束昵,測試一下:
sudo docker run hello-world
以上詳情拔稳,如有不清楚的,可以參看:https://docs.docker.com/engine/installation/linux/ubuntulinux/
不出意外的話锹雏,run hello-world是連不上的巴比,比如說這樣的錯誤:
docker: An error occurred trying to connect: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create: read unix @->/var/run/docker.sock: read: connection reset by peer.
原因你懂的,所以我們需要國內(nèi)的鏡像礁遵。
Docker鏡像
國內(nèi)有不少鏡像可以使用轻绞,比如我們可以使用阿里云的。阿里云會為每個用戶生成一個專用的賬戶佣耐,可以在這里查到:https://cr.console.aliyun.com/?spm=5176.100239.blogcont29941.12.x4Yf82#/accelerator
通過下面的命令設置就好了:
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=你的地址\"" | sudo tee -a /etc/default/docker
sudo service docker restart
設置好了之后政勃,再運行sudo docker run hello-world,就看到下面的輸出:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
Ubuntu
于是我們就開干吧:
先來個Ubuntu 16.04暖暖場:
sudo docker pull ubuntu:16.04
sudo docker run -it ubuntu:16.04
命令行就變成了ubuntu 16.04系統(tǒng)的提示符兼砖,我們apt update一下看看:
root@769f87c152a9:/# apt update
Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
不錯奸远,apt能用,說明至少已經(jīng)不是apt-get的時代了讽挟。xenial也替代了precise懒叛。
Ubuntu的tag可以參看:Ubuntu docker鏡像
CentOS
再來個CentOS,目前最新的版本是CentOS 7.
sudo docker run -it centos:7
網(wǎng)址在:CentOS docker鏡像
OpenSUSE
OpenSUSE的愛好者請用這個:
sudo docker run -it opensuse:leap /bin/bash
然后就可以感受一下zypper:
bash-4.3# zypper update
Retrieving repository 'NON-OSS' metadata -----------------------------------------------------------------------------------------------------------------------------------------------------------------------[\]Retrieving repository 'NON-OSS' metadata ....................................................................................................................................................................[done]
Building repository 'NON-OSS' cache .........................................................................................................................................................................[done]
目前的OpenSUSE是Leap 42.2版本耽梅。
OpenSUSE版本列表
Fedora
Fedora已經(jīng)支持到25了薛窥。
sudo docker run -it fedora:25 /bin/bash
網(wǎng)址:Fedora版本列表
Docker下掛載主機目錄
ubuntu 16.04在docker中起來了,但是眼姐,它還訪問不了主機上的代碼诅迷,比如Android代碼佩番。所以我們需要做路徑的映射:
sudo docker run -it -v /disk08/xulun/Android:/usr/Android ubuntu:16.04
-v參數(shù),前面是主機路徑罢杉,冒號后面是容器中的掛載點答捕。
設置docker image默認目錄
這還沒完,因為docker默認會將image存放在/var/lib/docker下面屑那。正常情況下拱镐,/所掛載的點的硬盤分區(qū)一般都不會太大,如果鏡像放多了持际,空間要不夠用沃琅。
所以我們還需要將docker的工作目錄更換一下,我們還是修改配置文件蜘欲,在Ubuntu 12.04下益眉,這個配置文件在/etc/default/docker中。
我們添加這么一行:
DOCKER_OPTS="$DOCKER_OPTS --graph=新的docker目錄"
組合起來一句話:
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --graph=新的docker目錄\"" | sudo tee -a /etc/default/docker
sudo service docker restart
Virtual Box大法
在Ubuntu 12.04上姥份,通過apt-get install已經(jīng)可以安裝virtualbox了郭脂。不過是比較老的版本,要裝最新的版本還是需要小小折騰一下澈歉,不過比起docker來確實已經(jīng)輕松很多了展鸡。
安裝Virtual box
首先還是先更新軟件源,修改/etc/apt/sources.list:
deb http://download.virtualbox.org/virtualbox/debian precise contrib
然后還是更新key:
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
最后埃难,更新列表并安裝
sudo apt-get update
sudo apt-get install virtualbox-5.1
VirtualBox都是有圖像界面的莹弊,通過下載官方的iso安裝操作系統(tǒng)就可以了。Ubuntu, Debian, OpenSUSE, CentOS等都很友好涡尘,只有Gentoo和Archlinux值得講一講忍弛,我們后面再說。