Docker本地鏡像的導(dǎo)出導(dǎo)入兩種方案介紹
前言
Docker中的導(dǎo)入和導(dǎo)出,提供兩種方案,下面分別介紹。
- 對(duì)于容器(container)的導(dǎo)入和導(dǎo)出,使用export和import。
- 對(duì)于鏡像(image)的導(dǎo)入和導(dǎo)出,使用save和load。
1. 容器(container)的導(dǎo)入和導(dǎo)出
如果需要導(dǎo)出和導(dǎo)入容器(container),則使用export和import命令。
1)查看本機(jī)的容器(container)
通過(guò)命令docker ps -a
來(lái)查詢本機(jī)所有的容器。
示例如下 :
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6d2304b6a8e2 registry "/entrypoint.sh /etc…" 2 hours ago Up 2 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry $
2)導(dǎo)出容器(container)
導(dǎo)出容器(container)命令格式:
docker export <容器ID> > <生成容器文件>.tar
示例如下:
$ docker export 6d2304b6a8e2 > registry_container.tar $ $ ls -la -rw-rw-r-- 1 wrs wrs 25727488 Oct 24 23:24 registry.tar
3)導(dǎo)入容器(container)
導(dǎo)入容器(container)命令格式:
docker import - <新鏡像名稱> < <容器文件>.tar
示例如下:
$ docker import - registry-new < registry_container.tar sha256:b8f4b29755a2fcc3e82e33895e911cb2b151195561f257e6baa8f4caec31612b $ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry-new latest b8f4b29755a2 13 seconds ago 25.2MB registry latest 75ef5b734af4 12 months ago 25.4MB
2. 鏡像(image)的導(dǎo)入和導(dǎo)出
如果需要導(dǎo)出和導(dǎo)入鏡像(image),則使用save和load命令。
1)查看本機(jī)的鏡像(image)
通過(guò)命令docker images
來(lái)查詢本機(jī)所有的鏡像。
示例如下:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry-new latest b8f4b29755a2 5 minutes ago 25.2MB registry latest 75ef5b734af4 12 months ago 25.4MB
2)保存鏡像
使用docker save
命令根據(jù)鏡像ID將鏡像保存成一個(gè)文件。命令格式:
docker save <鏡像ID> > <鏡像文件>.tar
示例如下:
$ docker save 75ef5b734af4 > registry_image.tar $ ls -l total 50576 -rw-rw-r-- 1 wrs wrs 26008064 Oct 24 23:43 registry_image.tar
還可以將多個(gè)鏡像打成一個(gè)文件。命令格式:
docker save -o <鏡像文件>.tar <鏡像1名稱>:<TAG> <鏡像2名稱>:<TAG> <鏡像3名稱>:<TAG>
示例如下:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry-new latest b8f4b29755a2 17 minutes ago 25.2MB mysql latest be960704dfac 9 days ago 602MB mariadb latest 4b8711c6c639 7 weeks ago 407MB registry latest 75ef5b734af4 12 months ago 25.4MB $ $ docker save -o multi_images.tar mysql:latest mariadb:latest registry:latest wrs@wrs-VirtualBox:/tmp$ wrs@wrs-VirtualBox:/tmp$ ls -l total 1083696 -rw------- 1 wrs wrs 1057908736 Oct 24 23:49 multi_images.tar -rw-rw-r-- 1 wrs wrs 26008064 Oct 24 23:43 registry_image.tar -rw-rw-r-- 1 wrs wrs 25727488 Oct 24 23:24 registry.tar
3)載入鏡像
使用docker load命令將鏡像文件加載。命令格式:
docker load < <鏡像文件>.tar
示例如下:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry-new latest b8f4b29755a2 26 minutes ago 25.2MB mariadb latest 4b8711c6c639 7 weeks ago 407MB registry latest 75ef5b734af4 12 months ago 25.4MB $ $ docker load < mysql_image.tar 664144bd1f24: Loading layer [==================================================>] 115.7MB/115.7MB d6b2e74ff5bc: Loading layer [==================================================>] 11.26kB/11.26kB e4b9aa8d7f77: Loading layer [==================================================>] 2.359MB/2.359MB 351aeade47c3: Loading layer [==================================================>] 16.94MB/16.94MB ba13a3d5fd83: Loading layer [==================================================>] 6.656kB/6.656kB a175988b08be: Loading layer [==================================================>] 3.072kB/3.072kB 46eea9ff66e1: Loading layer [==================================================>] 142.3MB/142.3MB 34e3dfece44b: Loading layer [==================================================>] 3.072kB/3.072kB 95debb10d09a: Loading layer [==================================================>] 342MB/342MB cf0628e5b340: Loading layer [==================================================>] 17.41kB/17.41kB Loaded image: mysql:latest $ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry-new latest b8f4b29755a2 27 minutes ago 25.2MB mysql latest be960704dfac 9 days ago 602MB mariadb latest 4b8711c6c639 7 weeks ago 407MB registry latest 75ef5b734af4 12 months ago 25.4MB
3. 兩種方案的差別
1)是否包含鏡像歷史
- export導(dǎo)出(import導(dǎo)入)是根據(jù)容器獲取的鏡像,再導(dǎo)入時(shí)會(huì)丟失鏡像所有的歷史記錄和元數(shù)據(jù)信息(即僅保存容器當(dāng)時(shí)的快照狀態(tài)),所以無(wú)法進(jìn)行回滾操作。
- save保存(load加載)的是鏡像,沒(méi)有丟失鏡像的歷史,可以回滾到之前的層(layer)。
2)是否可以對(duì)鏡像重命名
- 容器的import可以為鏡像指定新的名稱
- 鏡像的load不能對(duì)載入的鏡像重命名
3)是可以將多個(gè)鏡像/容器打包到一個(gè)文件
- export不支持
- save支持
4)應(yīng)用場(chǎng)景不同
- 容器的export導(dǎo)出的應(yīng)用場(chǎng)景:主要是用來(lái)制作基礎(chǔ)鏡像。比如從一個(gè)ubuntu鏡像啟動(dòng)一個(gè)容器,然后安裝一些軟件和進(jìn)行一些設(shè)置后,使用export保存為一個(gè)基礎(chǔ)鏡像。然后,把這個(gè)鏡像分發(fā)給他人使用,比如作為基礎(chǔ)的開(kāi)發(fā)環(huán)境。
- 鏡像的save保存的應(yīng)用場(chǎng)景:如果應(yīng)用的是使用docker-compose.yml編排的多個(gè)鏡像組合,但要部署的客戶服務(wù)器并不能連外網(wǎng)。這時(shí)就可以使用save將用的鏡像打包,然后拷貝到客戶的服務(wù)器上使用load載入。
總結(jié)
到此這篇關(guān)于Docker本地鏡像的導(dǎo)出導(dǎo)入兩種方案的文章就介紹到這了,更多相關(guān)Docker本地鏡像導(dǎo)出導(dǎo)入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決docker數(shù)據(jù)文件過(guò)大導(dǎo)致根磁盤滿的問(wèn)題
本篇文章主要介紹了解決docker數(shù)據(jù)文件過(guò)大導(dǎo)致根磁盤滿的問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04Docker 教程之獲取鏡像基礎(chǔ)知識(shí)詳解
這篇文章主要介紹了Docker 教程之獲取鏡像詳解的相關(guān)資料,需要的朋友可以參考下2016-12-12docker啟動(dòng)mysql及-e MYSQL_ROOT_PASSWORD=my-secret-pw問(wèn)題解決
本文主要介紹了docker啟動(dòng)mysql及-e MYSQL_ROOT_PASSWORD=my-secret-pw問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07詳解Windows下運(yùn)用Docker部署Node.js開(kāi)發(fā)環(huán)境
這篇文章主要介紹了詳解Windows下運(yùn)用Docker部署Node.js開(kāi)發(fā)環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過(guò)程詳解
這篇文章主要介紹了Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過(guò)程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Docker遇到Intellij IDEA,Java開(kāi)發(fā)提升了十倍生產(chǎn)力
這篇文章主要介紹了Docker遇到Intellij IDEA,Java開(kāi)發(fā)提升了十倍生產(chǎn)力,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10-bash:?docker-compose未找到命令的解決方案
這篇文章主要介紹了-bash:?docker-compose:?未找到命令,需要的朋友可以參考下2023-12-12Docker中cgroups資源控制實(shí)戰(zhàn)
cgroups是Linux內(nèi)核的功能,允許用戶管理和限制進(jìn)程組資源使用,支持資源限制、優(yōu)先級(jí)控制、資源記錄等,應(yīng)用廣泛,Docker和k8s等容器技術(shù),通過(guò)cgroups實(shí)現(xiàn)精細(xì)的資源控制,本文就來(lái)詳細(xì)的介紹一下2024-11-11docker中使用mysql數(shù)據(jù)庫(kù)詳解(在局域網(wǎng)訪問(wèn))
這篇文章主要給大家介紹了在docker中使用mysql數(shù)據(jù)庫(kù),在局域網(wǎng)訪問(wèn)的相關(guān)資料,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06