问题描述

docker运行容器打包成镜像保存并导出

步骤

1 查看需要保存的容器的的名字,这里以hexo镜像举例说明

1
2
3
4
docker ps 
#查看容器
docker images
#查看镜像

image-20230212141422923

2 保存镜像docker commit提交容器副本使之成为一个新的镜像

可以看出已经存在一个hexo:1.0的镜像,所以这边博主保存为hexo:2.0

1
2
docker stop hexo 
docker commit hexo hexo:2.0

image-20230212141747577

3 选择镜像进行保存

1
2
docker save hexo:2.0 |gzip > ./hexo2.0.zip
# docker save -o 文件名 镜像名 【这样也是ok的,方式多样,这个是我常用的】

image-20230212142455646

加载镜像

可以在别的设备上传,加载刚保存的镜像了。当别人拿到了我的.tar文件或者我上文打包的.zip文件的时候,都可以进行解压

把本地导入docker镜像run起来即可使用

1
docker load -i hexo2.0.zip

总结

当我在hexo的容器上修改后,可以通过 docker commit 的方式将容器生成新的镜像

换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化

如果使用 docker commit 制作镜像,以及后期修改的话,每一次修改都会让镜像更加臃肿一次,所删除的上一层的东西并不会丢失,会一直如影随形的跟着这个镜像,即使根本无法访问到。这会让镜像更加臃肿。

我们修改了容器的文件,通过 docker diff 命令看到具体的改动

butterfly

git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git /usr/local/blog/themes

如果你沒有 pug 以及 stylus 的渲染器,請下載安裝:

npm install hexo-renderer-pug hexo-renderer-stylus –save

在 hexo 的根目錄創建一個文件 _config.butterfly.yml,並把主題目錄的 _config.yml 內容複製到 _config.butterfly.yml 去

cp _config.yml /usr/local/blog/_config.butterfly.yml