Docker項目開發(fā)組決定在新的一年開始之初放出一些很酷的東西,大家都猜到了,那就是Docker 1.5,也是2015年Docker的第一個release版本。在這個版本中我們“消滅”了長久以來存在的,令人討厭的bug;同時也將社區(qū)中比較火的功能PR融入其中。還等什么,讓我們看看這些變化吧!
在新版本中你可以使用新提供的-ipv6標記來為每個容器分配IPV6的地址。您可以在容器中解析ipv6地址,甚至可以使用這個特性連接不同宿主機上運行的Docker容器。如果需要對此功能做深入了解,請查看此文檔。那我們開始愉快的使用這個新特性吧:
支持IPV6
run the nginx container $ docker run -d -p 80:80 --restart always --name ipv6-nginx nginx exec into it to change the default config to support ipv6 $ docker exec -it ipv6-nginx bash edit the /etc/nginx/conf.d/default.conf under listen 80; add the following line: listen [::]:80 restart the nginx service this will also pop you out of the container and back to your host root@container # service nginx restart get the global ipv6 address $ docker inspect --format="{{.NetworkSettings.GlobalIPv6Address}}" ipv6-nginx 2a00:1450::242:ac11:5e $ curl -6 -g [2a00:1450::242:ac11:5e]只讀容器
您可使用--read-only標簽啟動一個容器,使她在文件系統(tǒng)層面上“只讀”;這個功能可以讓你為容器中運行的應用限定特定的文件寫入路徑;此功能結(jié)合“數(shù)據(jù)卷”(volumes)使用可以確保容器中運行的程序只能將數(shù)據(jù)寫入到事先指定的路徑下。
容器運行監(jiān)控
容器很“屌”!它能將你要運行的程序打包,然后以一個整體的可以移植的方式運行;同時還能限定每個容器運行時能使用的資源,防止某些容器將宿主機資源用盡的情況。為了能夠更精確的限定每個容器能使用的資源,你需要實時獲取到容器運行時使用資源的情況。
在Docker 1.5中我們發(fā)布了新的統(tǒng)計API(stat API endpoint)與新的命令行工具;使用這些方式你可以實時監(jiān)控一個運行容器的CPU、內(nèi)存、網(wǎng)絡IO與塊設備IO運行情況。你也可以使用stats API來構(gòu)建工具來將這些信息傳送到已有的監(jiān)控系統(tǒng)中,或者自己實現(xiàn)一個監(jiān)控面板。
指定要構(gòu)建的Dockerfile
這可能是近幾個月來最被期望的PR了:為docker build命令指定要使用的Dockerfile,而不是一味的執(zhí)行默認的Dockerfile。docker build -f命令可以讓你為一個項目定義多個用途的Dockerfile,同時指定此次運行的docker build -f命令運行的是哪一個。這個對于測試與生產(chǎn)環(huán)境要使用不同的Dockerfile生成鏡像的項目來說非常有幫助。
開放Docker鏡像構(gòu)建機制
隨著Docker社區(qū)的日益壯大,越來越多的開發(fā)者加入到了Docker社區(qū),為Docker項目貢獻代碼。我們也期望開發(fā)者能更多的參與Docker鏡像的構(gòu)建與鏡像層級構(gòu)建等方面的開發(fā)。作為第一步,我們開放了Docker鏡像的低層實現(xiàn)機制,包括如何構(gòu)建與格式化一個鏡像以及她們低層是如何配置的。我們的目的是,幫助開發(fā)者能夠更好的理解Docker鏡像——這是Docker非常低層非常重要的方面;以幫助他們?yōu)楦倪MDocker鏡像格式本身做出貢獻。第一版文檔可以在這里查看。(譯者注:這是彩蛋!)
感謝
很多“同志”為了Docker1.5的發(fā)布付出了很多艱辛與努力,他們是:Daniel Dao Quang Minh, Don Kjer, Harald Albers, Michal Minar, Phil Estes, Qiang Huang, Andrew Vagin, Abin Shahab;當然還有很多Docker社區(qū)的代碼貢獻者;沒有他們就沒有這次更新。