docker容器commit打包越來越大的原因分析及解決
docker容器commit打包越來越大
一、背景和原因
docker容器就是以便于移植和部署著稱。那么在docker使用過程中,少不了對容器進(jìn)行反復(fù)的的打包和部署。
為了追求容器完整性,往往使用docker commit 容器ID 新鏡像名:tag 來操作,再使用save/load對其進(jìn)行打包/部署鏡像。
但是根據(jù)上面的命令操作往往發(fā)現(xiàn),即使很小的容器經(jīng)過上述步驟操作幾次后得到的鏡像仍舊會變得很大很大(即使容器內(nèi)的文件都被刪掉了)。
這主要是由于:
docker鏡像的構(gòu)建方式是以層的概念來實現(xiàn)的,在容器內(nèi)所做的所有操作都會在構(gòu)建鏡像時運行一遍,每一個操作所涉及到的內(nèi)存空間, 都會成為鏡像文件的一部分。
看到的大都是壓縮容器根目錄制作基礎(chǔ)鏡像或者操作Dockerfile之類的,相對就比較復(fù)雜,或者不是我們想要的答案。
以下參考文章中的方法1給出比較詳細(xì)好用的解決方法步驟。
二、解決方法
為了減少鏡像文件所占內(nèi)容空間,采用export直接打包容器,然后通過import導(dǎo)入鏡像,繼而展開成容器。
1、可采用export命令打包容器生成鏡像文件
docker export -o name.tar 容器ID 或者docker export 容器ID > name.tar
注:此時必須記下當(dāng)前容器的COMMAND內(nèi)容,后面要用到。
2、加載成鏡像
生成的tar鏡像包就可以進(jìn)行移植和部署,假設(shè)換了一臺機(jī)器后部署該鏡像,加載鏡像可采用的命令:
docker import name.tar 容器name:tag
3、將鏡像展開成容器
如果正常使用的docker run命令時將會出現(xiàn)報錯:
docker: Error response from daemon: No command specified.
See 'docker run --help'.
此時就體現(xiàn)第1步中需要記住的COMMAND內(nèi)容的重要性了。
如果原環(huán)境還在,可通過 docker ps --no-trunc 查看你原容器的COMMAND。假設(shè)原容器的COMMAND為"bash"。
將原來使用export導(dǎo)出鏡像時的容器COMMAND內(nèi)容追加到要啟動容器后面即可:
docker run -itd --restart=always --name xxx xxx:latest "bash"
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何修改docker官方鏡像內(nèi)部內(nèi)容并重新build鏡像
這篇文章主要介紹了如何修改docker官方鏡像內(nèi)部內(nèi)容并重新build鏡像問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08Docker安裝運行apache2服務(wù)器做圖片服務(wù)器的方法
這篇文章主要介紹了Docker安裝運行apache2服務(wù)器做圖片服務(wù)器的方法,需要的朋友可以參考下2017-06-06docker倉庫登錄及配置insecure-registries的方法
這篇文章主要介紹了docker倉庫登錄配置insecure-registries的方法,docker客戶端如果配置中添加了insecure-registary配置,就不需要在docker 客戶端配置上對應(yīng)證書,如果不配置要在/etc/docker/certs.d/目錄中添加對應(yīng)證書才能正常登錄,感興趣的朋友跟隨小編一起看看吧2022-07-07講解使用Docker搭建Java Web運行環(huán)境
本篇文章詳細(xì)的介紹了使用Docker搭建Java Web運行環(huán)境,想要學(xué)習(xí)docker的同學(xué)可以了解一下。2016-11-11Docker?Compose構(gòu)建Jenkins的實現(xiàn)
本文主要介紹了Docker?Compose構(gòu)建Jenkins的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06群暉NAS利用Docker容器搭建KMS激活服務(wù)器實現(xiàn)激活windows系統(tǒng)和office(操作步驟)
本文跟大家分享一下如何利用群暉NAS的Docker容器套件搭建KMS服務(wù)器,并演示如何利用我們自己的KMS服務(wù)器激活Windows操作系統(tǒng)與Microsoft Office,感興趣的朋友跟隨小編一起看看吧2021-05-05