1. 程式人生 > >Docker映象的建立、存出、載入的方法

Docker映象的建立、存出、載入的方法

建立映象的方法有三種:基於已有映象的容器建立、基於本地模板匯入、基於Dockerfile建立,本博文講解前兩種。

基於已有映象的容器建立

該方法是使用docker commit命令,其命令格式為:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

主要引數選項包括:

  • -a ,–author=”” 作者資訊

  • -m,–message=”” 提交資訊

  • -p,–pause=true 提交是暫停容器執行

比如,先建立一個執行bash的ubuntu容器:

docker run –it ubuntu /bin/bash

[email protected]
:/# touch test [email protected]:/# exit

然後根據建立的這個容器來提交一個新的映象,提交時需要用到容器ID。

docker commit –m “test” –a “zmc” d8990fec2141 testimage

如果成功的話,就會返回新映象的長ID號,然後可以檢視看在本地已有的映象:

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

testimage      latest       baea98d5a437    About a minute ago  188.3 MB

……

第三行就是剛剛建立的映象。

PS:利用此容器建立的映象Id與此容器的映象id不同,可知它們不是同一映象。

基於本地模板匯入

也可以從作業系統模板檔案匯入一個映象,比如使用OpenVZ提供的模板建立,OPENVZ下載模板在:http://openvz.org/Download/template/precreated

我嘗試使用了Ubuntu14.04的模板: 

wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz

下載完之後就可以匯入了:

sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04

其實只是兩個命令,不過很顯而易見,就不加解釋了。成功的話,就會返回根據模板建立的映象的長ID

sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04

ab80404d13d580965b9919b640169ccb585ea7884e6aa9de1ec043075c65fe35

然後就可以檢視本地的映象:

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

ubuntu       14.04        ab80404d13d5    56 seconds ago   215.4 MB

testimage      latest       baea98d5a437    29 minutes ago   188.3 MB

….

其實可以看出,雖然模板才75M,但建立的映象並不小。

映象的存出和載入

可以利用docker save和docker命令來存出和載入映象。

存出鏡像

如果想要把映象存出到本地檔案,可以使用docker save命令,例如,存出本地的剛才建立的testimage:lastest為映象檔案testimage.tar檔案:

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

testimage      latest       baea98d5a437    25 minutes ago   188.3 MB

ubuntu       latest       fa81ed084842    3 days ago     188.3 MB

….

docker save –o /data/testimage.tar testimage:latest

上面的第6行就是存出程式碼,這時在/data下就有一個testimage.tar檔案,這時我們把本地映象rmi掉,然後嘗試載入。

載入映象

刪除映象之後的狀態:

[email protected]–223–238–ubuntu:/data$ docker rmi baea98d5a437

Untagged: testimage:latest

Deleted: baea98d5a4371a6abf9efc8c53a54a6fc5befd167bf91ce9fd4a28a6d1b7dc5b

[email protected]–223–238–ubuntu:/data$ docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

ubuntu       14.04        ab80404d13d5    5 minutes ago    215.4 MB

然後載入映象:

docker load —input testimage.tar

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

ubuntu       14.04        ab80404d13d5    6 minutes ago    215.4 MB

testimage      latest       baea98d5a437    35 minutes ago   188.3 MB

第一行就是載入映象,還可以簡化寫成:

docker load —input testimage.tar

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

ubuntu       14.04        ab80404d13d5    6 minutes ago    215.4 MB

testimage      latest       baea98d5a437    35 minutes ago   188.3 MB

載入操作將會匯入映象以及相關的元資料資訊(包括標籤等)。

映象的上傳

最後說點映象的上傳,映象的管理方式非常像git,可以使用docker push命令上傳自己本地映象到倉庫,預設上傳到DockerHub官方倉庫(需要登陸),命令格式:

docker push NAME[:TAG]

在上傳之前一般會先為自己的映象新增帶自己名字(作者資訊)的標籤:

docker tag testimage:lastest zmc/testimage:lastest

docker pushzmc/testimage:lastest

有利於上傳之後的區分。

我覺得無論是運維團隊還是開發團隊還是一個實驗室,都有必要有一個自己的Docker倉庫,可以存放符合自己需求的環境或系統映象,可以實現快速部署。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援指令碼之家。

您可能感興趣的文章:

文章同步釋出: https://www.geek-share.com/detail/2754968176.html

參考文章: