背景
docker將鏡像導(dǎo)出到本地,上傳至內(nèi)網(wǎng)服務(wù)器上
背景:在企業(yè)中往往出現(xiàn)了內(nèi)網(wǎng)不能和外網(wǎng)相通,不能使用docker pull命令來拉取鏡像,這個時候我們就可以考慮在有所需鏡像的服務(wù)器上導(dǎo)出鏡像,再將其上傳到內(nèi)網(wǎng)服務(wù)器上。
有兩種方法,一種是通過容器,一種是通過鏡像,其實本質(zhì)是一樣的,容器的實質(zhì)就是鏡像
參考文章一
本文主要講述的是第二種通過鏡像的方式進(jìn)行導(dǎo)出和上傳
docker save
用于導(dǎo)出鏡像到文件,包含鏡像元數(shù)據(jù)和歷史信息;(個人推薦這種
)docker export
用于將當(dāng)前容器狀態(tài)導(dǎo)出至文件,類似快照,所以不包含元數(shù)據(jù)及歷史信息,體積更小,此外從容器快照導(dǎo)入時也可以重新指定標(biāo)簽和元數(shù)據(jù)信息;
1. docker容器打包成鏡像和壓縮
(1)首先查看鏡像所在的容器,獲取到容器id
docker ps -a
(2)將容器保存成鏡像
sudo docker commit -a 'yjw' e007d8b7e1b7 my_projectv2:v2
sudo:以管理員權(quán)限運行命令,通常用于在 Linux 系統(tǒng)中運行需要管理員權(quán)限的命令。
docker:Docker 命令行工具。
commit:提交 Docker 鏡像的命令。
-a:指定鏡像的作者,這里是作者的名字: yjw。
e007d8b7e1b7:docker的容器id。
my_projectv2:v2:要新創(chuàng)建的鏡像的名稱和版本號,這里是新建一個名為 my_projectv2:v2的鏡像,版本號為 v2。
因此,這條命令將創(chuàng)建一個新的 Docker 鏡像,名為 my_projectv2:v2,并將它提交到 Docker 倉庫中。
(3)將鏡像打包
docker save -o my_projectv2.tar my_projectv2
docker:Docker 命令行工具。
save:將 Docker 鏡像保存為文件的命令。
~
-o : 參數(shù)表示指定輸出文件的路徑和名稱,這個路徑是相對于當(dāng)前工作目錄的路徑。如果當(dāng)前工作目錄是 /etc/docker,那么 my_projectv2.tar 文件會被保存到 /etc/docker/my_projectv2.tar , 如上圖所示
。
~
my_projectv2:v2 :要保存的 Docker 鏡像的名稱和版本號,這里是一個名為 my_projectv2的鏡像,版本號為 v2。
(注意:我沒加版本號也執(zhí)行了,是因為我鏡像名稱是唯一的,不存在相同的版本號,因此命令沒有加:v2不會出錯
)
因此,這條命令將把名為 my_projectv2、版本號為 v2 的 Docker 鏡像保存為一個名為 my_projectv2.tar 的文件。
(4)將鏡像包壓縮
sudo tar -zcvf my_projectv2.tar.gz my_projectv2.tar
還有一種容器的打包和壓縮一步到位的方法:
docker save my_projectv2:v2 | gzip > my_projectv2.tar.gz
2. docker鏡像壓縮包解壓及鏡像載入 (移動到自己想要運行的服務(wù)器)
(1)壓縮包解壓
通過finalshell或者其它方式,把前面步驟壓縮的鏡像壓縮包給上傳到內(nèi)網(wǎng)服務(wù)器指令目錄
(注意:我這里只是模仿步驟。有什么出入請指正)
tar -zxvf mask_detection_v5.tar.gz
得到.tar格式的鏡像包
(2)鏡像載入
sudo docker load -i my_projectv2.tar
載入后利用 (比如想要修改加載的鏡像,可以參閱后面的一、二、…五等步驟
)
sudo docker images
查看已存在的鏡像。
(3)啟動鏡像-運行項目
docker run -d -it -p 8888:8888 --restart always --name my_dockerv2 my_projectv2:v2
或者 (-p 8888:8888 端口號的前后書寫順序沒有關(guān)系,但是建議使用第一個 )
docker run -d -it --restart always --name my_dockerv2 -p 8888:8888 my_projectv2:v2
(4)啟動鏡像-項目成功
(5)docker停止容器(停止項目)
① 先查看所有正在運行中的容器
docker ps
② docker stop 容器id 停止容器
docker stop 2baed9f6f723
PS:某些情況下需要強(qiáng)制關(guān)閉,可以使用
docker kill 容器ID
(6)再次啟動容器
docker start my_dockerv2
注意:執(zhí)行啟動命令后,后臺運行項目環(huán)境需要花時間,因此使用IP地址訪問時需要花時間等待才能夠訪問成功
PS:因為docker run 屬于創(chuàng)建新容器并運行,我只是啟動已有的容器,故不使用docker run xxx。
而 docker start 命令用于啟動一個已經(jīng)存在的容器
參考文章二
———————————————————————————————————————————————————
一、加載鏡像(已有)
在鏡像目錄下打開linux終端,輸入如下命令:
sudo docker load -i 鏡像文件名.tar
二、運行鏡像(已有)
鏡像加載好之后,使用如下命令查看對應(yīng)的鏡像id:
sudo docker images
然后根據(jù)鏡像id將鏡像運行在容器中:
docker run -it 要運行的鏡像id /bin/bash
三、對已有鏡像進(jìn)行修改
容器運行起來之后,就可以對鏡像進(jìn)行相應(yīng)的修改了。
查看已安裝的包:
pip list
安裝新的包:
pip install 包名
卸載已安裝的包:
pip uninstall 包名
修改完畢后,使用如下命令退出容器:
exit
四、將容器打包成新的鏡像
首先查看鏡像所在的容器,獲取到容器id:
docker ps -a
然后將容器保存為新的鏡像:
docker commit 容器id 要保存的鏡像名稱
五、將新的鏡像保存為tar包
首先獲取到新的鏡像id:
docker images
然后將新鏡像保存為tar包:
docker save 新鏡像id -o 要保存的tar包名稱.tar
保存為tar包之后,就可以加載使用了。
———————————————————————————————————————————————————
參考文章三文章來源:http://www.zghlxwxcb.cn/news/detail-545896.html
上一篇:
Linux 環(huán)境下Docker部署項目(七)
下一篇:文章來源地址http://www.zghlxwxcb.cn/news/detail-545896.html
end
到了這里,關(guān)于Linux 環(huán)境下Docker將鏡像打包導(dǎo)出到本地,上傳至內(nèi)網(wǎng)服務(wù)器(八)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!