工作中經(jīng)常需要拉取一些國(guó)外的鏡像,但是網(wǎng)絡(luò)限制等原因在公司拉取很慢,所以我習(xí)慣用亞馬遜服務(wù)器拉取鏡像,導(dǎo)出后下載到本地再導(dǎo)入開發(fā)環(huán)境。當(dāng)遇到多個(gè)鏡像文件需要處理的時(shí)候,可以借助shell腳本批量執(zhí)行,具體方法如下。
export 和 import 導(dǎo)出的是一個(gè)容器的快照, 不是鏡像本身, 也就是說(shuō)沒(méi)有 layer。 Dockerfile 里的 workdir, entrypoint 之類的所有東西都會(huì)丟失,commit 過(guò)的話也會(huì)丟失。
快照文件將丟棄所有的歷史記錄和元數(shù)據(jù)信息(即僅保存容器當(dāng)時(shí)的快照狀態(tài)),而鏡像存儲(chǔ)文件將保存完整記錄,體積也更大。
-
docker save 保存的是鏡像(image),docker export 保存的是容器(contAIner);
-
docker load 用來(lái)載入鏡像包,docker import 用來(lái)載入容器包,但兩者都會(huì)恢復(fù)為鏡像;
-
docker load 不能對(duì)載入的鏡像重命名,而 docker import 可以為鏡像指定新名稱。
save 和load
(相當(dāng)于鏡像的備份和恢復(fù))
導(dǎo)出鏡像:
docker save -o <保存路徑> <鏡像名稱:標(biāo)簽>
如把A機(jī) ubuntu:18.04 導(dǎo)出到當(dāng)前文件夾,則在A機(jī)上運(yùn)行:
docker save -o ./ubuntu18.tar ubuntu:18.04
此時(shí),把A機(jī)當(dāng)前文件夾下的ubuntu18.tar拷貝到另一臺(tái)安裝過(guò)docker的B機(jī)上,在B機(jī)上導(dǎo)入鏡像:
docker load --input ./ubuntu18.tar
這樣鏡像ubuntu:18.04就成功的從A機(jī)復(fù)制到B機(jī)上了
3. 在開發(fā)環(huán)境導(dǎo)入上述打包的鏡像
a) 查看鏡像id
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/calico/node v1.0.1 c70511a49fa1 6 weeks ago 257 MB hello-world latest 48b5124b2768 2 months ago 1.84 kB
b) 選擇要打包的鏡像,執(zhí)行打包命令
sudo docker save -o quay.io-calico-node-1.tar quay.io/calico/node
會(huì)在當(dāng)前目錄下生成導(dǎo)出文件xxx.tar,然后將此文件下載到本地
c) 導(dǎo)入上述打包的鏡像
docker load -i quay.io-calico-node-1.tar
至此,就完成了!