修改docker镜像并重新推送到镜像仓库

使用场景

最近工作中遇到的问题,需要对已有的镜像进行修改并重新上传。

具体操作

第一步 查看需要修改的镜像

sudo docker image ls 镜像tag

sudo docker image ls harborinner.517la.com:1111/dev/cluserappweb:2020-10-09-18-15-17

docker image ls

第二步 进入需要修改的镜像

sudo docker run -it ‘镜像id’ /bin/sh
或者
sudo docker run -it ‘镜像的tag’ /bin/sh

sudo docker run -it dc4840e1b0e4 /bin/sh
或者
sudo docker run -it harborinner.517la.com:1111/dev/cluserappweb:2020-10-09-18-15-17 /bin/sh

在这里插入图片描述

第三步 做相应修改,例如修改tomcat端口,server.xml,保存

在这里插入图片描述
完成之后用exit退出

第四步 用docker commit从容器打包镜像

用docker ps -a找到第二步退出的目前已为exit状态的容器id。然后执行如下命令重新打镜像

sudo docker ps -a

在这里插入图片描述

sudo docker commit -m “备注” -a “作者” 容器id 镜像tag

sudo docker commit -m "test" -a "leon" harborinner.517la.com:1111/dev/cluserappweb:2020-10-09-18-15-17-new

之后用docker images就能在本地找到重新打好的镜像
在这里插入图片描述

第四步 上传到镜像库

登陆镜像仓库
sudo docker login --username=用户名 仓库地址

sudo docker login --username=admin http://harborinner.517la.com:1111

sudo docker push 镜像tag

sudo docker push harborinner.517la.com:1111/dev/cluserappweb:2020-10-09-18-15-17-new

在这里插入图片描述

第五步 至此,我们修改后的镜像就推送至仓库了

我们到仓库查看一下
在这里插入图片描述

遇到的坑

容器启动一闪而过

如果参考以上操作修改tomcat镜像后重新上传启动容器,会发现tomcat容器无法启动(启动一下就默认退出)

原因是因为通过/bin/sh进入容器,会将镜像默认的入口覆盖,例如tomcat镜像默认入口是catalina.sh run

解决办法

一个是在启动时重新指定启动入口,如:

docker run harborinner.517la.com:1111/dev/cluserappweb:2020-10-09-18-15-17-new catalina.sh run

还有一种方法是启动容器之后,通过docker exec进入容器进行修改,然后再用docker commit打镜像。

sudo docker exec -it dc4840e1b0e4 /bin/sh

这样做的好处是打出来的镜像入口不会被覆盖

猜你喜欢

转载自blog.csdn.net/weixin_38087538/article/details/109080218
今日推荐