天天看點

Docker技術入門與實戰(第2版)3.5 建立鏡像

<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