<b>3.5 建立鏡像</b>
<b></b>
建立鏡像的方法主要有三種:基于已有鏡像的容器建立、基于本地模闆導入、基于dockerf?ile建立。
本節将重點介紹前兩種方法。最後一種基于dockerfile建立的方法将在後續章節專門予以詳細介紹。
1.?基于已有鏡像的容器建立
該方法主要是使用docker commit指令。指令格式為docker commit [options] container [repository[:tag]],主要選項包括:
-a, --author="":作者資訊;
-c, --change=[]:送出的時候執行dockerf?ile指令,包括cmd|entrypoint|env|expose|label|onbuild|user|volume|workdir等;
-m, --message="":送出消息;
-p, --pause=true:送出時暫停容器運作。
下面将示範如何使用該指令建立一個新鏡像。首先,啟動一個鏡像,并在其中進行修改操作,例如建立一個test檔案,之後退出:
$ docker run -it ubuntu:14.04 /bin/bash
root@a925cb40b3f0:/# touch test
root@a925cb40b3f0:/# exit
記住容器的id為a925cb40b3f0。
此時該容器跟原ubuntu:14.04鏡像相比,已經發生了改變,可以使用docker commit指令來送出為一個新的鏡像。送出時可以使用id或名稱來指定容器:
$ docker commit -m "added a new file" -a "docker newbee" a925cb40b3f0 test:0.1
9e9c814023bcffc3e67e892a235afe61b02f66a947d2747f724bd317dda02f27
順利的話,會傳回新建立的鏡像的id資訊,例如9e9c814023bcffc3e67e892a235afe61b02f66a947d2747f724bd317dda02f27。
此時檢視本地鏡像清單,會發現新建立的鏡像已經存在了:
$ docker images
repository tag image id created virtual size
test 0.1 9e9c814023bc 4 seconds ago 188 mb
2.?基于本地模闆導入
使用者也可以直接從一個作業系統模闆檔案導入一個鏡像,主要使用docker import指令。指令格式為docker import [options] file|url|-[repository[:tag]]。
要直接導入一個鏡像,可以使用openvz提供的模闆來建立,或者用其他已導出的鏡像模闆來建立。openvz模闆的下載下傳位址為http://openvz.org/download/templates/precreated。
例如,下載下傳了ubuntu-14.04的模闆壓縮包,之後使用以下指令導入:
$ cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
然後檢視新導入的鏡像,會發現它已經在本地存在了:
repository tag image id created virtual size
ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 mb