一、作用
    docker commit提交容器副本使之成为一个新的镜像
    本文章主要以tomcat为例来讲docker commit , 之前启动容器,未使用端口映射,这里来回忆一下
    image.png
    我们有如下镜像
    正常情况下我们运行下面这个tomcat就好了,但是如果我们将改镜像运行起来后,然后对其容器进行做了自定义修改,如果我想保存这个满足我们需求的容器,我们就可以用commit命令,生成一个满足我们自己需求的新的镜像

    image.png

    二、语法
    docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

    三、示例
    1、首先我们将tomcat跑起来,使用小p 指定端口
    docker run -it -p 8080:8080 tomcat
    image.png
    ps:因为我们这里tomcat版本比较高,tomcat9以上初始webapps 里面是没有东西的,当我们启动tomcat9的时候,访问默认的http://localhost:8080的时候,会出现404的现象,这样我们需要如下这么做
    使用 docker exec -it tomcat的CONTAINER ID /bin/bash使用ls -l查看目录

    1. ![](https://cdn.nlark.com/yuque/0/2020/png/3009107/1609077480837-9a216a41-7c89-47cf-85bf-20a59b0a6f6f.png#align=left&display=inline&height=328&margin=%5Bobject%20Object%5D&originHeight=328&originWidth=570&size=0&status=done&style=none&width=570)<br />把webapps先改为webapps2防止命名冲突 mv webapps webapps2

    再把webapps.dist改成webapps mv webapps.dist webapps

    重新访问就好
    image.png

    2、大P随机端口
    docker run -it -P tomcat
    image.png
    image.png

    3、commit 新镜像
    docker commit -m=”update webapps in this tomcat “ -a=”spz” 51a5121f7b74 spz/tomcat01:1.0
    image.png
    因为官方版本的新版本的tomcat的webapps里是没有任何东西的,我们提交的版本是修改过webapps的,里面有主页信息,所以我们运行我们打包好的tomcat镜像,则不用修改webapps,也可以显示主页信息
    docker run -it -p 8888:8080 spz/tomcat01:1.0
    ps:这里命名后面加入了版本号,因为不加默认为latest版本,因为我们当时建立的是1.0版本,所以这里需要加版本号
    image.png
    image.png

    4、以后台启动的形势启动
    docker run -d -p 7777:8080 spz/tomcat01:1.0
    image.png
    image.png
    这样启动就不会像之前打印出一堆的日志信息