Docker 1.6發(fā)布 面向Windows的Docker客戶端來(lái)了!
Docker 1.6版本發(fā)布了,一同發(fā)布新版本的還有Registry 2.0、Compose、Swarm、Machine以及Docker Windows客戶端,這次的變更很贊,值得一試!
我們很高興來(lái)宣布對(duì)Docker Engine、Registry、Compose、Swarm和Machine的更新。我們將它們同時(shí)發(fā)布,因此你可以一起測(cè)試,同時(shí)可以承載多個(gè)跨工具的特性。這些用來(lái)改善開(kāi)發(fā)體驗(yàn)的新特性主要有更快的拉取鏡像、Windows的預(yù)覽版Docker客戶端以及在Compose開(kāi)發(fā)環(huán)境下支持更多的應(yīng)用。
Docker Engine 1.6
Docker Engine從1.5版本以來(lái)已經(jīng)有了很大提升,同時(shí)帶來(lái)了新的特性以及Windows客戶端的支持。我們創(chuàng)造這么多令人驚訝的版本都離不開(kāi)如此幫的社區(qū)貢獻(xiàn)者們。你可以從下載Docker Engine 1.6開(kāi)始體驗(yàn),并閱讀變更日志。
下面讓我們來(lái)一起看看Docker Engine1.6中有哪些新內(nèi)容。
容器和鏡像標(biāo)簽
標(biāo)簽使得用戶可以附加自定義的元數(shù)據(jù)到容器和鏡像上,這可以通過(guò)你的工具來(lái)使用。這個(gè)特性已經(jīng)被反復(fù)提出一段時(shí)間了。社區(qū)在設(shè)計(jì)上達(dá)成共識(shí)并滿足大多數(shù)的使用場(chǎng)景,于是它成為1.6的一部分了。
我們非常的幸運(yùn)擁有一些很棒的微軟工程師來(lái)幫助我們,他們的集體努力使得Docker的Windows客戶端能夠有一個(gè)官方的版本。了解你的軟件在一個(gè)特定的操作系統(tǒng)上是如何編寫(xiě),這是非常有意思的事情,因此我們非常感謝這些Windows專家們?cè)谶@個(gè)過(guò)程中對(duì)于我們的指引。
Windows客戶端同一個(gè)遠(yuǎn)端宿主機(jī)一起工作,就像Mac客戶端一樣。我們甚至擴(kuò)展了測(cè)試框架來(lái)適應(yīng)Windows客戶端,當(dāng)測(cè)試每一個(gè)PR到Engine的任務(wù)。
日志驅(qū)動(dòng)器
對(duì)于一個(gè)日志驅(qū)動(dòng)的API已經(jīng)有了持續(xù)增長(zhǎng)的需求了,它使得你可以發(fā)送容器日志到其他系統(tǒng)中,如Syslog或者其他第三方工具。這個(gè)新的日志驅(qū)動(dòng)延續(xù)了現(xiàn)在Engine中的exec驅(qū)動(dòng)和存儲(chǔ)驅(qū)動(dòng)的概念。
在docker run中增加了一個(gè)新的可選項(xiàng)參數(shù)--log-dirver,它有三個(gè)選項(xiàng):json-file(這是個(gè)默認(rèn)選項(xiàng),和以前的功能一樣)、syslog和none。其中syslog驅(qū)動(dòng)補(bǔ)丁只有70行代碼,希望這是一個(gè)先例,讓人們明白未來(lái)添加其他補(bǔ)丁到Docker中是多么容易的事情。一定不要忽視none,在特定的重量級(jí)的應(yīng)用中,你可能不關(guān)心日志(如irssi),none是一個(gè)很好的選擇。
內(nèi)容定位的鏡像標(biāo)示符
以前當(dāng)你拉取、構(gòu)建或者運(yùn)行鏡像時(shí),用namespace/repository:tag形式來(lái)指定他們,或者只有repository。在有了Andy Goldstein的補(bǔ)丁之后,你現(xiàn)在可以在拉取、運(yùn)行、構(gòu)建時(shí)使用一個(gè)新的內(nèi)容定位標(biāo)示符,它叫做digest,語(yǔ)法是:namespace/repo@digest。Digest是一個(gè)不可變的引用到鏡像中的內(nèi)容。
使用digest的案例是圍繞應(yīng)用補(bǔ)丁和更新。如果你想要推出一個(gè)安全更新,你現(xiàn)在可以指定鏡像中特定的digest做安全更新,確保服務(wù)器正在運(yùn)行安全更新。
這個(gè)特征旨在v2版本的registry中支持。
--cgroup-parent
容器由命名空間、功能和cgroups組成。Docker已經(jīng)支持了自定義的命名空間和功能。另外,在這個(gè)版本中我們已經(jīng)增加了對(duì)自定義cgroups的支持。通過(guò)--cgroup-parent標(biāo)簽,你可以傳遞一個(gè)特定的cgroup來(lái)運(yùn)行一個(gè)容器在里面。這使得你自己可以創(chuàng)建和管理cgroups。你可以為這些cgroups定義自定義的資源并且把容器放在一個(gè)通用的父組中。
Ulimits
直到現(xiàn)在,容器從docker守護(hù)進(jìn)程中繼承ulimit設(shè)置。這可能會(huì)導(dǎo)***高地占用生產(chǎn)環(huán)境負(fù)載,但這樣并不理想。Ulimts使得你可以限制一個(gè)給定進(jìn)程的資源(你可能已經(jīng)熟悉ulimit命令)。在這個(gè)特征的幫助下,你可以在設(shè)置守護(hù)線程時(shí)指定默認(rèn)的ulimit設(shè)置給所有的容器。例如:
- docker -d --default-ulimit nproc=1024:2048
這將為所有的容器設(shè)置一個(gè)軟限制1024和一個(gè)硬限制2048子線程。你可以多次設(shè)置這個(gè)可選項(xiàng),例如:
- --default-ulimit nproc=1024:2408 --default-ulimit nofile=100:200
當(dāng)這樣創(chuàng)建一個(gè)容器時(shí),這些設(shè)置會(huì)被覆蓋:
- docker run -d --ulimit nproc=2048:4096 httpd
這會(huì)覆蓋默認(rèn)的nproc值。
Dockerfile命令在提交和導(dǎo)入時(shí)可以被使用
在Docker Engine1.6的驚艷特征中,***但并非最不重要的更新是使得對(duì)鏡像的變更可以on the fly,而不需要重新構(gòu)建整個(gè)鏡像。新特征commit --change和import --change使得你可以指定標(biāo)準(zhǔn)變更來(lái)應(yīng)用到新的鏡像。這些添加在Dockerfile語(yǔ)法并用于修改鏡像。相應(yīng)的Dockerfile說(shuō)明在docker commit和docker import中羅列,文檔在這里。
Registry 2.0 + Engine 1.6 = 更快的鏡像拉取
由于全面的重構(gòu)Registry和Engine 1.6中新的Registry API支持,拉取鏡像的性能和可靠性已經(jīng)大幅提升。今天已經(jīng)在DockerHub支持,同時(shí)我們已經(jīng)發(fā)布Registry2.0可用于自行搭建。更多內(nèi)容在這里。
Compose 1.2
Compose是一個(gè)在Docker上定義和運(yùn)行復(fù)雜應(yīng)用的工具。今天我們同時(shí)發(fā)布Compose1.2,它包括一個(gè)新的特征使得你可以擴(kuò)展服務(wù)到其他Compose文件,這樣就可以定義不同環(huán)境而不需要重復(fù)勞動(dòng)。當(dāng)然,也還有其他新特性,請(qǐng)查閱文檔。
Swarm 0.2
Swarm是一個(gè)原生Docker集群。它將一群Docker宿主機(jī)變成一個(gè)單一,虛擬的主機(jī)。Swarm 0.2在二月發(fā)布的0.1版本的基礎(chǔ)上構(gòu)建。它包括下面幾個(gè)新內(nèi)容:
傳播策略:一個(gè)新的策略來(lái)調(diào)度集群中的容器,在可用的節(jié)點(diǎn)中傳播它們。
更多Docker命令支持:更多進(jìn)展關(guān)于支持完整Docker API的工作已經(jīng)完成,例如支持拉取和檢閱鏡像。
集群驅(qū)動(dòng):這已經(jīng)不是第三方的驅(qū)動(dòng)了,但***步已經(jīng)向構(gòu)建一個(gè)嵌入式驅(qū)動(dòng)接口邁進(jìn)。未來(lái)可能會(huì)在集群系統(tǒng)上使用Swarm,如Mesos。
Machine 0.2
Machine使得在你的機(jī)器、云提供商和你的私有數(shù)據(jù)中心上創(chuàng)建Docker宿主很容易。Machine 0.2向一個(gè)穩(wěn)定版本的Machine邁出了一步。主要集中在提高穩(wěn)定性和擴(kuò)展性上:
明確驅(qū)動(dòng)接口:現(xiàn)在更容易來(lái)為提供商寫(xiě)驅(qū)動(dòng)。
更加可靠和持久化供應(yīng):供應(yīng)服務(wù)器現(xiàn)在由Machine處理,而不是讓每個(gè)驅(qū)動(dòng)各自做事。
重生成TLS認(rèn)證:一個(gè)新命令已經(jīng)被添加,為了更好的安全事件以及其中某個(gè)宿主機(jī)的IP變更,它用于重新生成一個(gè)宿主機(jī)的TLS認(rèn)證。
總結(jié)
我們非常興奮關(guān)于新版本的發(fā)布而且對(duì)未來(lái)的充滿了希望。感謝這個(gè)項(xiàng)目的所有貢獻(xiàn)者,這些都離不開(kāi)你們的幫助。同時(shí),我們感謝所有人,感謝你們對(duì)發(fā)布版的測(cè)試、問(wèn)題發(fā)現(xiàn)和提出。我們希望你們可以享受這次版本。貢獻(xiàn)者和管理者:我們?cè)贗RC上關(guān)注著你們。再次感謝大家!