日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux docker导入镜像,Docker镜像的导入和导出

發布時間:2023/12/4 linux 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux docker导入镜像,Docker镜像的导入和导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相關閱讀:

場景描述:

需要在客戶現場快速部署應用,東西多,時間短

場景分析:

為了節省時間,使用docker進行快速部署,由于不是內部環境,無法使用內部私有庫,于是構建鏡像,將鏡像導出

解決辦法:

使用dockerfile構建應用鏡像,將鏡像導出,在部署的節點上將鏡像導入,啟動容器即可

鏡像導入和導出:

docker提供了把鏡像導出為文件的機制,有兩種方式:

1.save / load ? 保存/加載

save有兩種

第一種:

docker save 鏡像id > 目錄/XXX.tar

第二種(推薦):

docker save repository:tag > 目錄/XXX.tar

load命令如下:

docker load < XXX.tar

2.export / import ?導出/導入

export命令如下:

docker export 容器名 > XXX.tar

import命令:

docker import XXX.tar REPOSITORY:TAG

這兩種方式都能都導出,但是細節不同,先進行對比,后通過實例演示

導出的對象

導出文件大小

是否可回滾到歷史層

save / load

將鏡像導出

export / import

將容器導出

從本質上來說,save/load導出的是鏡像,export/import導出的是容器,大家不要弄混

相對于文件大小來說,save方式導出的文件比export方式導出的文件大

正是因為save方式保存了鏡像的歷史和層(layer),使其可以層回滾,即回滾到之前的歷史層,所以save方式導出的文件稍微大一些

反觀export方式,在導出過程中丟失所有的歷史,導致其不可以層回滾,導出的文件會小一些

演示:

下面通過實例,對這兩種方式進行演示和對比

save / load 方式

1.save 保存鏡像

這里有一個構建好的鏡像

[root@uat-app01 /]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos_ssh latest ae0548244885 10 days ago 285 MB

先查看該鏡像的歷史層

注意:

docker images –tree命令已被棄用,現已用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

導出該鏡像,導出的鏡像文件為280M

注意:

如果使用docker save + 鏡像id方式導出,導入的鏡像的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 加載鏡像

將鏡像導入到其他環境,加載鏡像文件

先來加載方法1導出的鏡像文件

[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添加標簽,這里就不做演示了,多一步顯得很冗余,推薦大家使用save的第二種方法導出

[root@uat-ucs01 /]# docker images -a

REPOSITORY TAG IMAGE ID CREATED SIZE

ae0548244885 10 days ago 284.7 MB

刪除該鏡像

再來加載方法2導出的鏡像文件

[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 導出

這里有一個正在運行的容器,基礎鏡像也是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

將該容器導出,export方式導出的文件大小為258M,比save方式導出的文件小了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導入

在其他環境,將文件導入

[root@uat-ucs01 /]# docker import /centos_ssh.tar centos_ssh:latest

sha256:d1e984b716211a3b29b39f75d6c31a132844f9307d87e81c540364162e311074

查看導入的鏡像

[root@uat-ucs01 /]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos_ssh latest d1e984b71621 4 seconds ago 261.2 MB

查看鏡像的歷史層,沒有之前的歷史層,只有從導入開始的歷史層

[root@uat-ucs01 /]# docker history d1e984b71621

IMAGE CREATED CREATED BY SIZE COMMENT

d1e984b71621 21 seconds ago 261.2 MB Imported from -

至此,docker的導入和導出介紹完了,我們下篇文章見

親,看完了點個贊唄!

17+

總結

以上是生活随笔為你收集整理的linux docker导入镜像,Docker镜像的导入和导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。