一、作用
docker commit提交容器副本使之成为一个新的镜像
本文章主要以tomcat为例来讲docker commit , 之前启动容器,未使用端口映射,这里来回忆一下
我们有如下镜像
正常情况下我们运行下面这个tomcat就好了,但是如果我们将改镜像运行起来后,然后对其容器进行做了自定义修改,如果我想保存这个满足我们需求的容器,我们就可以用commit命令,生成一个满足我们自己需求的新的镜像
二、语法
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
三、示例
1、首先我们将tomcat跑起来,使用小p 指定端口
docker run -it -p 8080:8080 tomcat
ps:因为我们这里tomcat版本比较高,tomcat9以上初始webapps 里面是没有东西的,当我们启动tomcat9的时候,访问默认的http://localhost:8080的时候,会出现404的现象,这样我们需要如下这么做
使用 docker exec -it tomcat的CONTAINER ID /bin/bash使用ls -l查看目录
<br />把webapps先改为webapps2防止命名冲突 mv webapps webapps2
再把webapps.dist改成webapps mv webapps.dist webapps
重新访问就好
2、大P随机端口
docker run -it -P tomcat
3、commit 新镜像
docker commit -m=”update webapps in this tomcat “ -a=”spz” 51a5121f7b74 spz/tomcat01:1.0
因为官方版本的新版本的tomcat的webapps里是没有任何东西的,我们提交的版本是修改过webapps的,里面有主页信息,所以我们运行我们打包好的tomcat镜像,则不用修改webapps,也可以显示主页信息
docker run -it -p 8888:8080 spz/tomcat01:1.0
ps:这里命名后面加入了版本号,因为不加默认为latest版本,因为我们当时建立的是1.0版本,所以这里需要加版本号
4、以后台启动的形势启动
docker run -d -p 7777:8080 spz/tomcat01:1.0
这样启动就不会像之前打印出一堆的日志信息