如何解決docker commit后鏡像越來(lái)越大問(wèn)題
解決docker commit后鏡像越來(lái)越大問(wèn)題
在一些情況下,需要將容器直接打包為鏡像。不想在Dockerfile中編寫一行行代碼。
但是使用:
docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的鏡像名:Tag
會(huì)導(dǎo)致鏡像越來(lái)越大。10G的鏡像經(jīng)過(guò)4次commit就變成100G。
我們可以通過(guò):docker system df -v
,在【Containers space usage:】中查看容器的大小
雖然顯示只有10G,但是commit后會(huì)非常大。
所以在此找到2種方法:
方法1
直接打包容器,然后import為鏡像img1
docker export -o img.tar 容器ID docker import img.tar img1:20221011123412
方法2
將容器內(nèi)根目錄所有文件壓縮。傳到容器外,再import為鏡像img1
# 第一步:壓縮 sudo tar --exclude=./proc --exclude=./sys --exclude=./img.tar -cvf img.tar ./ 第二步:傳出容器 docker cp 容器ID:img.tar ./ 第三步:import為鏡像 cat img.tar | sudo docker import - img:202201010101
注意壓縮時(shí)會(huì)提醒權(quán)限問(wèn)題【tar: Exiting with failure status due to previous errors】,導(dǎo)致壓縮報(bào)錯(cuò)。
原因是:
- proc 、sys的部分文件是沒(méi)有權(quán)限的。而tar --exclude=./proc 雖然是跳過(guò)proc,但是注意絕對(duì)/相對(duì)路徑文件。
- 否則還是壓縮/proc,還會(huì)報(bào)錯(cuò)。
綜上對(duì)比,還是方法1比較好用。不要再用方法2了。
總結(jié)的圖:
不過(guò)使用上邊打好的鏡像,在本機(jī)ocker run運(yùn)行OK,在其他設(shè)備就報(bào)錯(cuò):
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:385: applying cgroup configuration for process caused: Failed to activate service 'org.freedesktop.systemd1': timed out (service_start_timeout=25000ms): unknown.
有文章說(shuō)是設(shè)備內(nèi)存不足。。。。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解利用ELK搭建Docker容器化應(yīng)用日志中心
這篇文章主要介紹了詳解利用ELK搭建Docker容器化應(yīng)用日志中心,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04常用的8個(gè)應(yīng)用和中間件的Docker運(yùn)行示例詳解
Portainer是一個(gè)輕量級(jí)的管理 UI ,可讓你輕松管理不同的 Docker 環(huán)境(Docker 主機(jī)或 Swarm 群集),這篇文章主要介紹了常用的8個(gè)應(yīng)用和中間件的Docker運(yùn)行示例,需要的朋友可以參考下2024-03-03Docker數(shù)據(jù)存儲(chǔ)之Volumes詳解
今天小編就為大家分享一篇關(guān)于Docker數(shù)據(jù)存儲(chǔ)之Volumes詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02docker容器中登陸并操作postgresql的實(shí)現(xiàn)
本文主要介紹了docker容器中登陸并操作postgresql的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02Docker安裝Nginx并部署及MySQL容器構(gòu)建全過(guò)程
眾所周知Docker是一種容器化技術(shù),可以用來(lái)快速部署和管理應(yīng)用程序,這篇文章主要給大家介紹了關(guān)于Docker安裝Nginx并部署及MySQL容器構(gòu)建的相關(guān)資料,需要的朋友可以參考下2024-02-02Docker中Mysql容器無(wú)法停止無(wú)法刪除問(wèn)題
這篇文章主要介紹了Docker中Mysql容器無(wú)法停止無(wú)法刪除問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03