Docker,一個(gè)流行的將軟件打包的開源容器平臺(tái),已經(jīng)有了新的1.6版,增加了許多新的特性。該版本主要更新了Docker Registry、Engine、 Swarm、 Compose 和 Machine等方面。這次發(fā)布旨在提升性能、改善開發(fā)者和系統(tǒng)管理員的體驗(yàn)。讓我們來快速看看有哪些新特性吧。
Docker Registry (2.0)是一項(xiàng)推送Docker鏡像用于存儲(chǔ)和分享的服務(wù),因?yàn)槊媾R加載下的體驗(yàn)問題而經(jīng)歷了架構(gòu)的改變。它仍然向后兼容。Docker Registry的編寫語言現(xiàn)在從Python改為Google的Go語言了,以提升性能。與Docker Engine 1.6結(jié)合后,拉取鏡像的能力更快了。早先的鏡像是隊(duì)列式輸送的,而現(xiàn)在是并行的啦。
Docker Engine (1.6)相比之前的版本有很大的提高。目前支持容器與鏡像的標(biāo)簽。通過標(biāo)簽,你可以附加用戶自定義的元數(shù)據(jù)到鏡像和容器上,而鏡像和容器反過來可以被其他工具使用。標(biāo)簽對(duì)正在運(yùn)行的應(yīng)用是不可見的,可以用來加速搜索容器和鏡像。
Windows版本的Docker客戶端可以連接到遠(yuǎn)程的運(yùn)行在linux上的Docker Engine。
Docker目前支持日志驅(qū)動(dòng)API,這允許我們發(fā)送容器日志給系統(tǒng)如Syslog,或者第三方。這將會(huì)使得系統(tǒng)管理員受益。
Swarm (0.2)是一個(gè)Docker集群工具,可以將一個(gè)Docker主機(jī)池轉(zhuǎn)換為一個(gè)虛擬主機(jī)。在新特性里,容器甚至被放在了可用的節(jié)點(diǎn)上。通過添加更多的Docker命令,努力支持完整的Docker API。將來,使用第三方驅(qū)動(dòng)來集群會(huì)成為可能。
Compose (1.2) 是一個(gè)Docker里定義和運(yùn)行復(fù)雜應(yīng)用的工具, 也得到了升級(jí)。在新版本里,可以創(chuàng)建多個(gè)子文件,而不是用一個(gè)沒有結(jié)構(gòu)的文件描述一個(gè)多容器應(yīng)用。
通過Machine (0.2),我們可以很容易地在本地計(jì)算機(jī)、云和數(shù)據(jù)中心上搭建Docker主機(jī)。新的發(fā)布版本為開發(fā)者提供了一個(gè)相對(duì)干凈地驅(qū)動(dòng)界面來編寫驅(qū)動(dòng)。Machine集中控制供給,而不是每個(gè)獨(dú)立的驅(qū)動(dòng)。增加了新的命令,可以用來生成主機(jī)的TLS證書,以提高安全性。
在Fedora / CentOS 上的升級(jí)指導(dǎo)
在這一部分里,我們將會(huì)學(xué)習(xí)如何在Fedora和CentOS上升級(jí)已有的docker到最新版本。請(qǐng)注意,目前的Docker僅運(yùn)行在64位的架構(gòu)上,F(xiàn)edora和CentOS都源于RedHat,命令的使用是差不多相同的,除了在Fedora20和CentOS6.5里Docker包被叫做“docker-io”。
如果你系統(tǒng)之前沒有安裝Docker,使用下面命令安裝:
"yum install docker-io" – on Fedora20 / CentOS6.5
"yum install docker" - on Fedora21 / CentOS7
在升級(jí)之前,備份一下docker鏡像和容器卷是個(gè)不錯(cuò)的主意。
參考“將文件系統(tǒng)打成 tar 包”與“卷備份、恢復(fù)或遷移”,獲取更多信息。
目前,測(cè)試系統(tǒng)安裝了Docker1.5。樣例輸出顯示是來自一個(gè)Fedora20的系統(tǒng)。
驗(yàn)證當(dāng)前系統(tǒng)安裝的Docker版本
[root@TestNode1 ~]#sudo docker -v
Docker version 1.5.0, build a8a31ef/1.5.0
如果Docker正在運(yùn)行,先停掉。
[root@TestNode1 ~]# sudo systemctl stop docker
使用yum update升級(jí)到最新版,但是寫這篇文章的時(shí)候,倉庫并不是最新版本(1.6),因此你需要使用二進(jìn)制的升級(jí)方法。
[root@TestNode1 ~]#sudo yum -y update docker-io
No packages marked for update
[root@TestNode1 ~]#sudo wget https://get.docker.com/builds/Linux/x86_64/docker-latest -O /usr/bin/docker
--2015-04-19 13:40:48-- https://get.docker.com/builds/Linux/x86_64/docker-latest
Resolving get.docker.com (get.docker.com)... 162.242.195.82
Connecting to get.docker.com (get.docker.com)|162.242.195.82|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15443598 (15M) [binary/octet-stream]
Saving to: /usr/bin/docker
100%[======================================>] 15,443,598 8.72MB/s in 1.7s
2015-04-19 13:40:50 (8.72 MB/s) - /usr/bin/docker saved
檢查更新后的版本
[root@TestNode1 ~]#sudo docker -v
Docker version 1.6.0, build 4749651
重啟docker服務(wù)
[root@TestNode1 ~]# sudo systemctl start docker
確認(rèn)Docker在運(yùn)行
[root@TestNode1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
fedora latest 834629358fe2 3 months ago 241.3 MB
[root@TestNode1 ~]# docker run fedora /bin/echo Hello World
Hello World
CentOS安裝時(shí)需要注意,在CentOS上安裝完Docker后,當(dāng)你試圖啟動(dòng)Docker服務(wù)的時(shí)候,你可能會(huì)得到錯(cuò)誤的信息,如下所示:
docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
Active: failed (Result: exit-code) since Mon 2015-04-20 03:24:24 EDT; 6h ago
Docs: http://docs.docker.com
Process: 21069 ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=127)
Main PID: 21069 (code=exited, status=127)
Apr 20 03:24:24 centos7 systemd[1]: Starting Docker Application Container E.....
Apr 20 03:24:24 centos7 docker[21069]: time="2015-04-20T03:24:24-04:00" lev...)"
Apr 20 03:24:24 centos7 docker[21069]: time="2015-04-20T03:24:24-04:00" lev...)"
Apr 20 03:24:24 centos7 docker[21069]: /usr/bin/docker: relocation error: /...ce
Apr 20 03:24:24 centos7 systemd[1]: docker.service: main process exited, co.../a
Apr 20 03:24:24 centos7 systemd[1]: Failed to start Docker Application Cont...e.
Apr 20 03:24:24 centos7 systemd[1]: Unit docker.service entered failed state.
這是一個(gè)已知的bug(https://bugzilla.redhat.com/show_bug.cgi?id=1207839),需要將設(shè)備映射升級(jí)到最新。
[root@centos7 ~]# rpm -qa device-mapper
device-mapper-1.02.84-14.el7.x86_64
[root@centos7 ~]# yum update device-mapper
[root@centos7 ~]# rpm -qa device-mapper
device-mapper-1.02.93-3.el7.x86_64
[root@centos7 ~]# systemctl start docker
總結(jié)
盡管docker技術(shù)出現(xiàn)時(shí)間不長(zhǎng),但很快就變得非常流行了。它使得開發(fā)者的生活變得輕松,運(yùn)維團(tuán)隊(duì)可以快速獨(dú)立地創(chuàng)建和部署應(yīng)用。通過該公司的發(fā)布,Docker的快速更新,產(chǎn)品質(zhì)量的提升,滿足用戶需求,未來對(duì)于Docker來說一片光明。