修改docker镜像并重新推送到镜像仓库
使用场景最近工作中遇到的问题,需要对已有的镜像进行修改并重新上传。具体操作第一步 查看需要修改的镜像docker image ls 镜像tagdocker image ls harborinner.517la.com:1111/dev/cluserappweb:2020-10-09-18-15-17第二步 进入需要修改的镜像docker run -it ‘镜像id’ /bin/sh或者docker
使用场景
最近工作中遇到的问题,需要对已有的镜像进行修改并重新上传。
具体操作
第一步 查看需要修改的镜像
sudo docker image ls 镜像tag
sudo docker image ls harborinner.517la.com:1111/dev/cluserappweb:2020-10-09-18-15-17
第二步 进入需要修改的镜像
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" ac12c8e1f24f 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
这样做的好处是打出来的镜像入口不会被覆盖
更多推荐
所有评论(0)