建立鏡像的方法有三種:基於已有鏡像的容器建立、基於本地模板導入、基於Dockerfile建立,本博文講解前兩種。html
基於已有鏡像的容器建立node
該方法是使用docker commit命令,其命令格式爲:git
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
主要參數選項包括:docker
-a ,–author=」」 做者信息ubuntu
-m,–message=」」 提交信息bash
-p,–pause=true 提交是暫停容器運行運維
好比,先建立一個運行bash的ubuntu容器:ide
docker run –it ubuntu /bin/bash root@d8990fec2141:/# touch test root@d8990fec2141:/# exit
而後根據建立的這個容器來提交一個新的鏡像,提交時須要用到容器ID。學習
docker commit –m 「test」 –a 「zmc」 d8990fec2141 testimage
若是成功的話,就會返回新鏡像的長ID號,而後能夠查看看在本地已有的鏡像:spa
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掉,而後嘗試載入。
載入鏡像
刪除鏡像以後的狀態:
ubuntu@VM–223–238–ubuntu:/data$ docker rmi baea98d5a437 Untagged: testimage:latest Deleted: baea98d5a4371a6abf9efc8c53a54a6fc5befd167bf91ce9fd4a28a6d1b7dc5b ubuntu@VM–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
參考文章: