建立鏡像的方法有三種:基於已有鏡像的容器建立、基於本地模板導入、基於Dockerfile建立,本博文講解前兩種。git
該方法是使用docker commit命令,其命令格式爲:github
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
主要參數選項包括:docker
好比,先建立一個運行bash的ubuntu容器:ubuntu
docker run –it ubuntu /bin/bashroot@d8990fec2141:/# touch testroot@d8990fec2141:/# exit
而後根據建立的這個容器來提交一個新的鏡像,提交時須要用到容器ID。bash
docker commit –m 「test」 –a 「zmc」 d8990fec2141 testimage
若是成功的話,就會返回新鏡像的長ID號,而後能夠查看看在本地已有的鏡像:運維
docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEtestimage latest baea98d5a437 About a minute ago 188.3 MB……spa
第三行就是剛剛建立的鏡像。操作系統
PS:利用此容器建立的鏡像Id與此容器的鏡像id不一樣,可知它們不是同一鏡像。.net
也能夠從操做系統模板文件導入一個鏡像,好比使用OpenVZ提供的模板建立,OPENVZ下載模板在:http://openvz.org/Download/template/precreated。3d
我嘗試使用了Ubuntu14.04的模板:
1
|
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.04ab80404d13d580965b9919b640169ccb585ea7884e6aa9de1ec043075c65fe35
而後就能夠查看本地的鏡像:
docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEubuntu 14.04 ab80404d13d5 56 seconds ago 215.4 MBtestimage latest baea98d5a437 29 minutes ago 188.3 MB….
其實能夠看出,雖然模板才75M,但建立的鏡像並不小。
能夠利用docker save和docker命令來存出和載入鏡像。
若是想要把鏡像存出到本地文件,可使用docker save命令,例如,存出本地的剛纔建立的testimage:lastest爲鏡像文件testimage.tar文件:
docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEtestimage latest baea98d5a437 25 minutes ago 188.3 MBubuntu latest fa81ed084842 3 days ago 188.3 MB….docker save –o /data/testimage.tar testimage:latest
上面的第6行就是存出代碼,這時在/data下就有一個testimage.tar文件,這時咱們把本地鏡像rmi掉,而後嘗試載入。
刪除鏡像以後的狀態:
ubuntu@VM–223–238–ubuntu:/data$ docker rmi baea98d5a437Untagged: testimage:latestDeleted: baea98d5a4371a6abf9efc8c53a54a6fc5befd167bf91ce9fd4a28a6d1b7dc5bubuntu@VM–223–238–ubuntu:/data$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEubuntu 14.04 ab80404d13d5 5 minutes ago 215.4 MB
而後載入鏡像:
docker load —input testimage.tardocker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEubuntu 14.04 ab80404d13d5 6 minutes ago 215.4 MBtestimage latest baea98d5a437 35 minutes ago 188.3 MB
第一行就是載入鏡像,還能夠簡化寫成:
docker load < testimage.tar
載入操做將會導入鏡像以及相關的元數據信息(包括標籤等)。
最後說點鏡像的上傳,鏡像的管理方式很是像git,可使用docker push命令上傳本身本地鏡像到倉庫,默認上傳到DockerHub官方倉庫(須要登錄),命令格式:
docker push NAME[:TAG]
在上傳以前通常會先爲本身的鏡像添加帶本身名字(做者信息)的標籤:
docker tag testimage:lastest zmc/testimage:lastestdocker pushzmc/testimage:lastest
有利於上傳以後的區分。
我以爲不管是運維團隊仍是開發團隊仍是一個實驗室,都有必要有一個本身的Docker倉庫,能夠存放符合本身需求的環境或系統鏡像,能夠實現快速部署。
轉自:夢續代碼