修改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" 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

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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值