Docker鏡像的創(chuàng)建、存出、載入的方法
創(chuàng)建鏡像的方法有三種:基于已有鏡像的容器創(chuàng)建、基于本地模板導(dǎo)入、基于Dockerfile創(chuàng)建,本博文講解前兩種。
基于已有鏡像的容器創(chuàng)建
該方法是使用docker commit命令,其命令格式為:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
主要參數(shù)選項包括:
- -a ,–author=”” 作者信息
- -m,–message=”” 提交信息
- -p,–pause=true 提交是暫停容器運行
比如,先創(chuàng)建一個運行bash的ubuntu容器:
docker run –it ubuntu /bin/bash root@d8990fec2141:/# touch test root@d8990fec2141:/# exit
然后根據(jù)創(chuàng)建的這個容器來提交一個新的鏡像,提交時需要用到容器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 ……
第三行就是剛剛創(chuàng)建的鏡像。
PS:利用此容器創(chuàng)建的鏡像Id與此容器的鏡像id不同,可知它們不是同一鏡像。
基于本地模板導(dǎo)入
也可以從操作系統(tǒng)模板文件導(dǎo)入一個鏡像,比如使用OpenVZ提供的模板創(chuàng)建,OPENVZ下載模板在:http://openvz.org/Download/template/precreated。
我嘗試使用了Ubuntu14.04的模板:
wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz
下載完之后就可以導(dǎo)入了:
sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04
其實只是兩個命令,不過很顯而易見,就不加解釋了。成功的話,就會返回根據(jù)模板建立的鏡像的長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,但創(chuàng)建的鏡像并不小。
鏡像的存出和載入
可以利用docker save和docker命令來存出和載入鏡像。
存出鏡像
如果想要把鏡像存出到本地文件,可以使用docker save命令,例如,存出本地的剛才創(chuàng)建的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掉,然后嘗試載入。
載入鏡像
刪除鏡像之后的狀態(tài):
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
載入操作將會導(dǎo)入鏡像以及相關(guān)的元數(shù)據(jù)信息(包括標(biāo)簽等)。
鏡像的上傳
最后說點鏡像的上傳,鏡像的管理方式非常像git,可以使用docker push命令上傳自己本地鏡像到倉庫,默認(rèn)上傳到DockerHub官方倉庫(需要登陸),命令格式:
docker push NAME[:TAG]
在上傳之前一般會先為自己的鏡像添加帶自己名字(作者信息)的標(biāo)簽:
docker tag testimage:lastest zmc/testimage:lastest docker pushzmc/testimage:lastest
有利于上傳之后的區(qū)分。
我覺得無論是運維團隊還是開發(fā)團隊還是一個實驗室,都有必要有一個自己的Docker倉庫,可以存放符合自己需求的環(huán)境或系統(tǒng)鏡像,可以實現(xiàn)快速部署。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Docker中Compose與Kubernetes的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于Docker中Compose與Kubernetes區(qū)別的相關(guān)資料,Docker Compose和Kubernetes(簡稱k8s)都是容器編排工具,需要的朋友可以參考下2023-08-08Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析
在本篇文章里小編給大家整理的是關(guān)于Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析,有需要的朋友們可以參考下。2020-02-02Docker容器/bin/bash?start.sh無法找到not?found問題解決
最近在學(xué)習(xí)聯(lián)系中遇到一個問題,百度后發(fā)現(xiàn)這個需求還是挺常見的,所以下面這篇文章主要給大家介紹了關(guān)于Docker容器/bin/bash?start.sh無法找到not?found問題的解決方法,需要的朋友可以參考下2022-08-08創(chuàng)建的docker容器時間顯示錯誤/date錯誤/時區(qū)錯誤
這篇文章主要介紹了創(chuàng)建的docker容器時間顯示錯誤/date錯誤/時區(qū)錯誤的處理方法,一起看看吧2017-06-06淺談Docker 容器數(shù)據(jù)卷掛載小結(jié)
本篇文章主要介紹了淺談Docker 容器數(shù)據(jù)卷掛載小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11Docker部署Rabbitmq容器實現(xiàn)過程解析
這篇文章主要介紹了Docker部署Rabbitmq容器實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11