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