一、情況
docker 鏡像有時無法從外網訪問,需要把docker 打包導出到本地,然后以文件的形式,發送給其他人,再然后其他人把docker 鏡像文件導入到自己的服務器本地鏡像倉庫,方可使用。也可把鏡像上傳到公司內網。下面就開始展示操作,實現上面的功能。
二、docker 容器打包成鏡像和壓縮
(1)首先查看鏡像所在的容器,獲取到容器ID
?(2)將容器保存成鏡像
?
sudo:以管理員權限運行命令,通常用于在 Linux 系統中運行需要管理員權限的命令。
docker:Docker 命令行工具。
commit:提交 Docker 鏡像的命令。
-a:指定鏡像的作者,這里是作者的名字: yjw。
e007d8b7e1b7:docker的容器id。
my_projectv2:v2:要新創建的鏡像的名稱和版本號,這里是新建一個名為 my_projectv2:v2的鏡像,版本號為 v2。
因此,這條命令將創建一個新的 Docker 鏡像,名為 my_projectv2:v2,并將它提交到 Docker 倉庫中。
?
?(3)將鏡像打包
?
?
docker:Docker 命令行工具。
save:將 Docker 鏡像保存為文件的命令。
~
-o : 參數表示指定輸出文件的路徑和名稱,這個路徑是相對于當前工作目錄的路徑。如果當前工作目錄是 /etc/docker,那么 my_projectv2.tar 文件會被保存到 /etc/docker/my_projectv2.tar , 如上圖所示。
~
my_projectv2:v2 :要保存的 Docker 鏡像的名稱和版本號,這里是一個名為 my_projectv2的鏡像,版本號為 v2。
(注意:我沒加版本號也執行了,是因為我鏡像名稱是唯一的,不存在相同的版本號,因此命令沒有加:v2不會出錯)
因此,這條命令將把名為 my_projectv2、版本號為 v2 的 Docker 鏡像保存為一個名為 my_projectv2.tar 的文件。
(4)將鏡像包壓縮
?
?還有一種容器的打包和壓縮一步到位的方法:
三、docker 鏡像壓縮包解壓 以及 鏡像導入到鏡像倉庫
(1)將鏡像壓縮包cp 到想要運行的服務器上
(2) 壓縮包解壓
?得到.tar格式的鏡像包
?(3)鏡像導入到本地鏡像倉庫
?
?(4)使用這個鏡像
sudo docker run -it --privileged --restart=always --name 自己的容器名字 -v /dev/bus/usb:/dev/bus/usb -v /home:/home/nvidia/? ?鏡像
?四、修改容器的環境,在生成新的鏡像
上面的鏡像運行成容器,進入容器后,修改容器的環境,可以重復第二節內容,就生成新的鏡像了。這樣就開始了鏡像的迭代升級。
例如: