柚子快報(bào)邀請碼778899分享:Docker鏡像導(dǎo)出/導(dǎo)入
柚子快報(bào)邀請碼778899分享:Docker鏡像導(dǎo)出/導(dǎo)入
Docker鏡像導(dǎo)出/導(dǎo)入
一、前言
在實(shí)際操作中,為了便于docker鏡像環(huán)境和服務(wù)配置的遷移,我們有時(shí)需要將已在測試環(huán)境主機(jī)上完成一系列配置的docker鏡像或運(yùn)行中的容器鏡像導(dǎo)出,并傳輸?shù)缴a(chǎn)或其他目標(biāo)環(huán)境主機(jī)上運(yùn)行。為此,本文主要聚焦于如何實(shí)現(xiàn)docker鏡像的導(dǎo)出和導(dǎo)入操作。
二、鏡像導(dǎo)出/導(dǎo)入
docker鏡像的導(dǎo)出/導(dǎo)入,可以用2種方進(jìn)行操作,但需要注意的是這2種方法不可以混用,以免造成啟動(dòng)容器時(shí)失敗,下面會(huì)以2種不同方進(jìn)行導(dǎo)出/導(dǎo)入。
2.1、方法一(利用倉庫鏡像導(dǎo)出/導(dǎo)入)
該方法是通過倉庫中的鏡像進(jìn)行導(dǎo)出/導(dǎo)入,也是比較推薦的方法,操作如下:
2.1.1、導(dǎo)出
首先要先確認(rèn)要導(dǎo)出倉庫中的哪些鏡像之后再進(jìn)行導(dǎo)出,如下圖查看docker倉庫中所有鏡像:
圖中標(biāo)紅的部分就是要導(dǎo)出的鏡像。
可利用docker sava命令進(jìn)行鏡像導(dǎo)出,如下:
(base) [root@milvus ~]# docker save -o quay_io_coreos_etcd.tar quay.io/coreos/etcd
quay_io_coreos_etcd.tar:代表導(dǎo)出鏡像后的壓縮名字,可以任意命名。
-o:指定輸出文件名,可以任意命名。
quay.io/coreos/etcd:代表倉庫中要導(dǎo)出的鏡像名稱。按倉庫中實(shí)際名字為主。
2.1.2、導(dǎo)入
把2.1.1小節(jié)中導(dǎo)出的鏡像tar包,利用ftp、sftp或是scp命令傳到生產(chǎn)或其他目標(biāo)環(huán)境主機(jī)上,執(zhí)行docker load命令進(jìn)行導(dǎo)入。如下:
傳包到生產(chǎn)或其他目標(biāo)環(huán)境主機(jī)上:
(base) [root@milvus ~]# scp quay_io_coreos_etcd.tar root@192.168.20.4:/app/docker
生產(chǎn)或其他目標(biāo)環(huán)境主機(jī)上導(dǎo)入:
[root@Bert docker]# docker load < quay_io_coreos_etcd.tar
導(dǎo)入過程或?qū)氤晒?,如下圖所示:
利用docker images查看倉庫中的鏡像,如下圖所示:
[root@Bert docker ]#docker images
依次類推把剩下的鏡像按照2.1.1和2.1.2小節(jié)的方法重復(fù)執(zhí)行即可。
導(dǎo)入完成的所有鏡像,如下圖所示:
注:如果在某一個(gè)容器里安裝了某些命令或配置,導(dǎo)出鏡像時(shí),一定要先把容器提交到鏡像,否則導(dǎo)出的鏡像再次導(dǎo)入新的docker中,你安裝命令或配置會(huì)丟失。
如下所示,我在某一個(gè)容器里安裝了查看網(wǎng)絡(luò)的命令,但沒有提交容器到鏡像,導(dǎo)出后再次導(dǎo)入到其它docker環(huán)境后,執(zhí)行ifconfig時(shí)報(bào)命令換不到:
[root@Bert milvus]# docker exec -it 33f6015462ea /bin/bash
root@33f6015462ea:/milvus/configs# ifconfig -a
bash: ifconfig: command not found
這里就需要重新再次這裝,所以在需要在導(dǎo)出前提交一下容器到鏡像,如下使用docker commit命令進(jìn)行操作:
[root@Bert milvus]# docker commit 33f6015462ea milvusdb/milvus:v2.3.4
sha256:095d810e7bbcc8a663c2b93922a1dad7164d43b675702291f8079392e691b7f6
33f6015462ea:代表容器ID,根據(jù)實(shí)際情況進(jìn)行選擇。
milvusdb/milvus:v2.3.4:代表鏡像名稱和鏡像標(biāo)簽,可以利用docker images進(jìn)行查看。
提交完之后,利用docker images命令查看時(shí),你會(huì)發(fā)現(xiàn)所提交的某一個(gè)鏡像的大小會(huì)發(fā)生成變化,如下圖所示:
提交前:
提交后:
2.2、方法二(利用容器中鏡像導(dǎo)出/導(dǎo)入)
此方法是通過容器中鏡像的ID進(jìn)行導(dǎo)出的。
2.2.1、導(dǎo)出
利用docker ps -a命令查看要導(dǎo)出的鏡像。
(base) [root@milvus ~]#docker ps -a
圖中標(biāo)紅的部分就是要導(dǎo)出的鏡像。
使用docker export命令進(jìn)行鏡像導(dǎo)出。
(base) [root@milvus ~]# docker export e45e6f82fc7f > milvus-etcd.tar
e45e6f82fc7f:代表的是鏡像在容器中的ID,根據(jù)實(shí)際情況進(jìn)行選擇。
milvus-etcd.tar:代表導(dǎo)出鏡像后的壓縮名字,可以任意命名。
2.2.2、導(dǎo)入
把2.2.1小節(jié)中導(dǎo)出的鏡像tar包,利用ftp、sftp或是scp命令傳到生產(chǎn)或其他目標(biāo)環(huán)境主機(jī)上,利用docker export命令導(dǎo)出的鏡像可以使用2種方法進(jìn)行導(dǎo)入。
2.2.2.1、導(dǎo)入方法一
執(zhí)行docker import命令進(jìn)行導(dǎo)入
傳包到生產(chǎn)或其他目標(biāo)環(huán)境主機(jī)上:
(base) [root@milvus ~]# scp milvus-etcd.tar root@192.168.20.4:/app/docker
生產(chǎn)或其他目標(biāo)環(huán)境主機(jī)上導(dǎo)入:
[root@Bert docker]# docker import milvus-etcd.tar
導(dǎo)入過程或?qū)氤晒Γ缦滤荆?/p>
[root@Bert docker]# docker import milvus-etcd.tar
sha256:16313b41937f899ccfcd03c87307e82fa336d876263f6f75b4384c8191c30341
利用docker images查看倉庫中的鏡像,如下圖所示:
[root@Bert docker ]#docker images
利用docker import命令導(dǎo)入的鏡像,鏡像在倉中是沒有鏡像名稱和標(biāo)簽的,可以使用docker tag命令進(jìn)行修改。
[root@Bert docker]# docker tag 6de761d89694 quay.io/coreos/etcd:v3.5.5
6de761d89694:代表倉庫中鏡像的ID,根據(jù)實(shí)際情況進(jìn)行選擇。
quay.io/coreos/etcd:v3.5.5:代表倉庫中鏡像名稱和標(biāo)簽。其中“:”前代表鏡像名稱,“:”后代表鏡像標(biāo)簽,名稱和標(biāo)簽可以任意命令,但個(gè)人建議名稱和標(biāo)簽盡量和原鏡像保持一致,以保證鏡你的統(tǒng)一,如果做了某些修改,為了和原鏡像名稱進(jìn)行區(qū)分,可以根據(jù)自己的實(shí)際情況進(jìn)行命名。
查看命名后結(jié)果。
[root@Bert docker]#docker images
2.2.2.2、導(dǎo)入方法二
利用cat image.tar|docker import – image_name:tag命令進(jìn)行導(dǎo)入。
image.tar:代表2.2.1小節(jié)導(dǎo)入的鏡像壓縮包名稱,根據(jù)實(shí)際導(dǎo)入的包進(jìn)行選擇。
image_name:tag:代表導(dǎo)入鏡像時(shí),對鏡像的命名和鏡像標(biāo)簽,其中“:”前代表鏡像名稱,“:”后代表鏡像標(biāo)簽,名稱和標(biāo)簽可以任意命令,但個(gè)人建議名稱和標(biāo)簽盡量和原鏡像保持一致,以保證鏡你的統(tǒng)一,如果做了某些修改,為了和原鏡像名稱進(jìn)行區(qū)分,可以根據(jù)自己的實(shí)際情況進(jìn)行命名。
如下操作:
[root@Bert docker]# cat milvus-etcd.tar | docker import? - quay.io/coreos/etcd:v3.5.5
sha256:c861cf7bb555ec93c20e1cf6f01e2104ffff6d1dfd3531fd0634f89c2d12e193
利用docker images查看倉庫中的鏡像,如下圖所示:
[root@Bert docker]#docker images
注:如果導(dǎo)入的鏡像啟動(dòng)之后,之前在容器里安裝的命令不能使用,可以參照2.1.2小節(jié)中的“注”進(jìn)行操作。
柚子快報(bào)邀請碼778899分享:Docker鏡像導(dǎo)出/導(dǎo)入
精彩文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。