在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 save [options] images [images...]
我們使用上面的映象來演示映象的匯出:
docker save -o dockerdemo.tar dockerdemo
如下圖所示:
這裡匯出的時候指定了匯出後檔案的路徑,如果不指定路徑,預設是當前資料夾。
或者也可以使用下面的命令匯出:
docker save > dockerdemo.tar dockerdemo
其中-o和>表示輸出到檔案,dockerdemo.tar為匯出的目標檔案,dockerdemo為源映象名。
我們檢視本地是否有了匯出後的檔案:
可以看到目錄下面已經有了剛才匯出的檔案。
我們首先使用XFtp把上面匯出的映象檔案上傳到阿里雲伺服器
然後進入檔案所在的目錄
我們檢視阿里雲伺服器上面有哪些映象:
從上圖中看出:現在阿里雲伺服器上面沒有任何的映象。
涉及到的匯入命令load
docker load [options]
接下來我們匯入剛才上傳的映象。
docker load -i dockerdemo.tar
如下圖所示:
或者也可以使用下面的命令
docker load < dockerdemo.tar
其中-i(i即imput)和<表示從檔案輸入。上面的兩個命令都會成功匯入映象以及相關後設資料,包括tag資訊。
匯入後檢視映象:
可以看到有了我們剛才匯入的映象。匯入了映象以後就可以根據映象執行容器,最後執行應用程式。
接下來我們演示容器的匯入和匯出。
涉及到的命令export。
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映象匯入和匯出是什麼意思的詳細內容,更多請關注TW511.COM其它相關文章!