在docker中,映像導入是利用「load [options]」指令,將目前映像複製出一個新的映像;鏡像匯出是利用「save [options] images」指令,保存包含歷史在內的鏡像所有的訊息。
本教學操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。
隨著容器技術的發展,現在很多的應用程式系統都會選擇使用docker容器進行部署,但是有時使用docker容器進行部署的時候會遇到問題,比如說我們的應用程式裡面需要依賴其他第三方的鏡像,如果這時候伺服器是在內網不能連接外網的情況下,那麼就無法部署了。基於這種情況,docker官方支援docker映像和容器的導入和導出,我們可以在一台能夠聯網的機器上面編譯鏡像,然後導出鏡像或容器,最後把導出的鏡像或容器上傳到內部網路伺服器,然後在導入鏡像或容器,這樣就可以了。
鏡像和容器的導入、匯出操作主要涉及到下面的幾個指令:save、load、export、import。
示範過程中我們是在本機產生鏡像或容器,然後把鏡像或容器匯出,最後上傳到阿里雲伺服器示範匯入功能。
我們使用VS 2019建立一個ASP.NET Core MVC的項目,新增Dockerfile檔案:
# 使用运行时镜像 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim # 设置工作目录 WORKDIR /app # 把目录下的内容都复制到当前目录下 COPY . . # 暴露80端口 EXPOSE 80 # 运行镜像入口命令和可执行文件名称 ENTRYPOINT ["dotnet", "DockerDemo.dll"]
然後發布項目。我們查看現有的docker映像
可以看到:現在只有兩個.net core的映像。我們產生鏡像:
docker build -t dockerdemo .
如下圖所示:
#查看生成後的映像
# #然後我們根據生成的鏡像來運行容器,首先查看現有的容器: #可以看到這時沒有任何容器。我們運行容器: 可以看到:容器已經運行成功了。 二、docker映像的匯入和匯出1、docker映像的匯出涉及的命令:docker save [options] images [images...]我們使用上面的映像來演示鏡像的導出:
docker save -o dockerdemo.tar dockerdemo如下圖所示: 這裡導出的時候指定了導出後文件的路徑,如果不指定路徑,默認是目前資料夾。 或也可以使用下面的命令導出:
docker save > dockerdemo.tar dockerdemo其中-o和>表示輸出到文件,dockerdemo.tar為導出的目標文件,dockerdemo為來源映像名。 我們查看本機是否有了匯出的檔案:
可以看到目錄下面已經有了剛剛匯出的檔案。
2、docker映像的導入我們先使用XFtp把上面匯出的映像檔上傳到阿里雲伺服器 然後進入檔案所在的目錄 我們檢視阿里雲端伺服器上面有哪些鏡像:##從上圖看出:現在阿里雲伺服器上面沒有任何的鏡像。
涉及的導入指令load
docker load [options]
接下來我們導入剛才上傳的鏡像。
docker load -i dockerdemo.tar
如下圖所示:
或也可以使用下面的命令
docker load < dockerdemo.tar
其中-i(i即imput)和<表示從文件輸入。上面的兩個指令都會成功導入鏡像以及相關元數據,包括tag資訊。
導入後查看鏡像:
可以看到有了我們剛剛導入的鏡像。導入了鏡像以後就可以根據鏡像運行容器,最後運行應用程式。
三、docker容器的匯入和匯出
1、docker容器的匯出
docker export [options] container
我們把上面產生的容器匯出:
docker export -o D:\containers\dockerdemocontainer.tar dockerdemo
如下圖所示:
其中,-o表示输出的文件,这里指定了输出的路径,如果没有指定路径,则默认生成到当前文件夹。dockerdemocontainer.tar为目标文件,dockerdemo为源容器名。
我们查看目录下面是否生成了导出的容器:
我们首先把导出的容器使用XFTP上传到阿里云服务器。
涉及到的导入命令import。
docker import [options] file|URL|- [REPOSITORY[:TAG]]
如下图所示
我们导入刚才上传的容器
docker import dockerdemocontainer.tar dockerdemo:imp
dockerdemocontainer.tar表示要导入的容器,dockerdemo:imp表示导入后的镜像名称,imp表示给导入的镜像打tag。
如下图所示
然后我们查看镜像:
可以看到这时有我们刚才导入的镜像了,导入的镜像tag为imp。
下面我们来总结一下镜像和容器导入导出的区别:
docker load不能对导入的镜像重命名,而docker import导入可以为镜像指定新名称。例如,上面导入的时候指定dockerdeom:imp。
对于是使用镜像导入导出还是使用容器导入导出该如何选择呢?有下面两点建议:
推荐学习:《docker视频教程》
以上是docker鏡像匯入和匯出是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!