linux docker导入镜像,Docker镜像的导入和导出
相關(guān)閱讀:
場景描述:
需要在客戶現(xiàn)場快速部署應(yīng)用,東西多,時間短
場景分析:
為了節(jié)省時間,使用docker進(jìn)行快速部署,由于不是內(nèi)部環(huán)境,無法使用內(nèi)部私有庫,于是構(gòu)建鏡像,將鏡像導(dǎo)出
解決辦法:
使用dockerfile構(gòu)建應(yīng)用鏡像,將鏡像導(dǎo)出,在部署的節(jié)點上將鏡像導(dǎo)入,啟動容器即可
鏡像導(dǎo)入和導(dǎo)出:
docker提供了把鏡像導(dǎo)出為文件的機(jī)制,有兩種方式:
1.save / load ? 保存/加載
save有兩種
第一種:
docker save 鏡像id > 目錄/XXX.tar
第二種(推薦):
docker save repository:tag > 目錄/XXX.tar
load命令如下:
docker load < XXX.tar
2.export / import ?導(dǎo)出/導(dǎo)入
export命令如下:
docker export 容器名 > XXX.tar
import命令:
docker import XXX.tar REPOSITORY:TAG
這兩種方式都能都導(dǎo)出,但是細(xì)節(jié)不同,先進(jìn)行對比,后通過實例演示
導(dǎo)出的對象
導(dǎo)出文件大小
是否可回滾到歷史層
save / load
將鏡像導(dǎo)出
大
是
export / import
將容器導(dǎo)出
小
否
從本質(zhì)上來說,save/load導(dǎo)出的是鏡像,export/import導(dǎo)出的是容器,大家不要弄混
相對于文件大小來說,save方式導(dǎo)出的文件比export方式導(dǎo)出的文件大
正是因為save方式保存了鏡像的歷史和層(layer),使其可以層回滾,即回滾到之前的歷史層,所以save方式導(dǎo)出的文件稍微大一些
反觀export方式,在導(dǎo)出過程中丟失所有的歷史,導(dǎo)致其不可以層回滾,導(dǎo)出的文件會小一些
演示:
下面通過實例,對這兩種方式進(jìn)行演示和對比
save / load 方式
1.save 保存鏡像
這里有一個構(gòu)建好的鏡像
[root@uat-app01 /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_ssh latest ae0548244885 10 days ago 285 MB
先查看該鏡像的歷史層
注意:
docker images –tree命令已被棄用,現(xiàn)已用docker history +鏡像id命令
[root@uat-app01 /]# docker history ae0548244885
IMAGE CREATED CREATED BY SIZE COMMENT
ae0548244885 10 days ago /bin/sh -c ln -snf /usr/share/zoneinfo/$TZ... 14 B
de38162f94f6 10 days ago /bin/sh -c #(nop) ENV TZ=Asia/Shanghai 0 B
64c78cfdb6d2 10 days ago /bin/sh -c #(nop) MAINTAINER yanwei
7a9653034358 2 weeks ago /bin/bash 81.1 MB
3fa822599e10 7 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
7 months ago /bin/sh -c #(nop) LABEL name=CentOS Base ... 0 B
7 months ago /bin/sh -c #(nop) ADD file:7441d818786942a... 204 MB
導(dǎo)出該鏡像,導(dǎo)出的鏡像文件為280M
注意:
如果使用docker save + 鏡像id方式導(dǎo)出,導(dǎo)入的鏡像的REPOSITORY和TAG會顯示為
方法1:
[root@uat-app01 /]# docker save ae0548244885 > /centos_ssh.tar
[root@uat-app01 /]# ll -sh /centos_ssh.tar
280M -rw-r--r-- 1 root root 280M Jul 17 11:20 /centos_ssh.tar
方法2:
[root@uat-app01 /]# docker save centos_ssh:latest > /centos_ssh2.tar
[root@uat-app01 /]# ll -sh /centos_ssh.tar
280M -rw-r--r-- 1 root root 280M Jul 17 11:31 /centos_ssh2.tar
2.load 加載鏡像
將鏡像導(dǎo)入到其他環(huán)境,加載鏡像文件
先來加載方法1導(dǎo)出的鏡像文件
[root@uat-ucs01 /]# docker load < /centos_ssh.tar
d1be66a59bc5: Loading layer [==================================================>] 212.1 MB/212.1 MB
610610a96352: Loading layer [==================================================>] 81.43 MB/81.43 MB
e5dab0be5e57: Loading layer [==================================================>] 3.072 kB/3.072 kB
Loaded image ID: sha256:ae0548244885ae05a4d8a3deab32bfeb0518697986586c3a1023579c8dc2d21c B/3.072 kB
查看該鏡像,REPOSITORY和TAG都為
解決這種情況,使用docker tag添加標(biāo)簽,這里就不做演示了,多一步顯得很冗余,推薦大家使用save的第二種方法導(dǎo)出
[root@uat-ucs01 /]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ae0548244885 10 days ago 284.7 MB
刪除該鏡像
再來加載方法2導(dǎo)出的鏡像文件
[root@uat-ucs01 /]# docker load < /centos_ssh2.tar
d1be66a59bc5: Loading layer [==================================================>] 212.1 MB/212.1 MB
610610a96352: Loading layer [==================================================>] 81.43 MB/81.43 MB
e5dab0be5e57: Loading layer [==================================================>] 3.072 kB/3.072 kB
Loaded image: centos_ssh:latest
查看該鏡像,REPOSITORY和TAG顯示都正常
[root@uat-ucs01 /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_ssh latest ae0548244885 10 days ago 284.7 MB
export / import 方式
1.export 導(dǎo)出
這里有一個正在運行的容器,基礎(chǔ)鏡像也是centos_ssh
[root@uat-app01 /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2cc200d98a54 centos_ssh "/bin/bash" 14 seconds ago Up 10 seconds wizardly_babbage
將該容器導(dǎo)出,export方式導(dǎo)出的文件大小為258M,比save方式導(dǎo)出的文件小了22M
[root@uat-app01 /]# docker export 2cc200d98a54 > /centos_ssh.tar
[root@uat-app01 /]# ll -sh /centos_ssh.tar
258M -rw-r--r-- 1 root root 258M Jul 17 14:06 /centos_ssh.tar
2.import導(dǎo)入
在其他環(huán)境,將文件導(dǎo)入
[root@uat-ucs01 /]# docker import /centos_ssh.tar centos_ssh:latest
sha256:d1e984b716211a3b29b39f75d6c31a132844f9307d87e81c540364162e311074
查看導(dǎo)入的鏡像
[root@uat-ucs01 /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_ssh latest d1e984b71621 4 seconds ago 261.2 MB
查看鏡像的歷史層,沒有之前的歷史層,只有從導(dǎo)入開始的歷史層
[root@uat-ucs01 /]# docker history d1e984b71621
IMAGE CREATED CREATED BY SIZE COMMENT
d1e984b71621 21 seconds ago 261.2 MB Imported from -
至此,docker的導(dǎo)入和導(dǎo)出介紹完了,我們下篇文章見
親,看完了點個贊唄!
17+
總結(jié)
以上是生活随笔為你收集整理的linux docker导入镜像,Docker镜像的导入和导出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快手提现比例是多少
- 下一篇: svn强制注释 linux,svn强制要