在容器化的环境下,我们要是想要去修改一个没有Dockerfile的镜像该怎么办呢?
一、我们要向这个镜像中添加一个文件,可以先将这个镜像启动成容器;
docker run -d --name demo_oldimages oldimage:1.0.0 /bin/bash -c "tail -f /dev/null" #将镜像运行起来,并保证容器不退出
二、 添加一个文件到这个容器里面;
docker cp /home/ec2-user/daopinz/demo/logback.xml e3cbaa08c34c:/opt/jars/ #将本地文件copy到容器内部
三、将添加过文件的容器保存为快照,并保存到本地;
或像GIT一样直接提交为一个新的镜像:docker commit e3cbaa08c34c new_images:1.0.1(只能跟旧镜像在同一个地方)
docker export e3cbaa08c34c > newimages.tar #将容器制作为快照 .tar文件
四、将保存的快照,恢复成一个新的镜像
cat newimages.tar |docker import - newimages:1.0.1 #导入容器快照作为新的镜像
五、将新的镜像push到仓库,就可以在k8s等环境中使用啦;
docker push docker.io/newimgaes:1.0.1 #push新的镜像到仓库