美文网首页Docker
【现学现忘Docker基础】— 20.Docker镜像commi

【现学现忘Docker基础】— 20.Docker镜像commi

作者: 繁华似锦Fighting | 来源:发表于2021-04-09 08:18 被阅读0次

    (1)commit命令作用

    在运行的容器中,并在镜像的基础上做了一些修改,我们希望保存起来,封装成一个新的镜像,方便我们以后使用,也就是提交容器副本,使之成为一个新的镜像。

    即:docker commit,从容器创建一个新的镜像。

    例如:

    我们以Tomcat镜像为例,运行启动Tomcat镜像后得到Tomcat容器,我们在Tomcat容器中做了一些自定义的设计或者修改,使此时的Tomcat容器成为符合我们需求的容器,之后就可以通过docker commit命令提交生成一个新的Tomcat镜像,也就是生成一个符合我们使用需求的Tomcat镜像,再下次在使用Tomcat容器时,直接使用我们自定义的新Tomcat镜像即可。

    (2)commit命令说明

    命令格式如下:

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

    OPTIONS说明:

    • -a:提交的镜像作者;
    • -c:使用Dockerfile指令来创建镜像;
    • -m:提交时的说明文字;
    • -p:在commit时,将容器暂停。

    (3)示例演示

    我们通过示例加深对镜像操作和理解。

    步骤1:查看本地Docker镜像

    [root@192 ~]# docker images
    REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
    centos                latest    300e315adb2f   3 months ago   209MB
    

    步骤2:下载Tomcat镜像到本地

    [root@192 ~]# docker pull tomcat:9.0
    9.0: Pulling from library/tomcat
    b9a857cbf04d: Pull complete 
    d557ee20540b: Pull complete 
    3b9ca4f00c2e: Pull complete 
    667fd949ed93: Pull complete 
    661d3b55f657: Pull complete 
    511ef4338a0b: Pull complete 
    a56db448fefe: Pull complete 
    00612a99c7dc: Pull complete 
    326f9601c512: Pull complete 
    c547db74f1e1: Pull complete 
    Digest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305
    Status: Downloaded newer image for tomcat:9.0
    docker.io/library/tomcat:9.0
    
    [root@192 ~]# docker images
    REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
    tomcat                9.0       040bdb29ab37   2 months ago   649MB
    centos                latest    300e315adb2f   3 months ago   209MB
    

    步骤3:启动容器

    执行命令:docker run -it --name tomcat123 -p 8888:8080 tomcat:9.0(注意该命令最后不要加/bin/bash)

    -p用法可以看前面的Docker安装Tomcat容器的练习)

    如下图:

    提示:-P大P的用法如下:

    也可以执行命令:docker run -d -p 6666: 8080 tomcat:9.0,进行Tomcat容器的后台启动。

    步骤4:对Tomcat镜像进行修改

    把Tomcat中webapps.dist目录中的内容,全部拷贝到webapps目录中。

    我们在XShell中新建一个窗口,进入Tomcat容器,进行修改。

    # 进入Tomcat容器中
    [root@192 ~]# docker exec -it tomcat123 /bin/bash
    root@d60ed0bff852:/usr/local/tomcat# 
    
    # webapps.dist目录中的内容,全部拷贝到webapps目录中。
    root@d60ed0bff852:/usr/local/tomcat# cp -r webapps.dist/* webapps
    root@d60ed0bff852:/usr/local/tomcat# ls -l webapps
    total 4
    drwxr-xr-x.  3 root root  223 Mar 18 05:02 ROOT
    drwxr-xr-x. 15 root root 4096 Mar 18 05:02 docs
    drwxr-xr-x.  7 root root   99 Mar 18 05:02 examples
    drwxr-xr-x.  6 root root   79 Mar 18 05:02 host-manager
    drwxr-xr-x.  6 root root  114 Mar 18 05:02 manager
    

    说明:

    因为发现默认Tomcat的webapps目录中是没有应用,这是镜像的原因,官方的镜像默认webapps下面是没有文件的。

    所以通过上面的操作,当我们启动Tomcat镜像的时候,就可以访问到Tomcat的欢迎界面了。(具体可看前面的Docker安装Tomcat容器的练习)

    步骤5:提交镜像

    将我们操作过的Tomcat容器通过commit提交为一个新的镜像,我们以后就使用我们修改过的镜像即可。

    命令如下:

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

    示例:

    # 退出Tomcat容器
    root@d60ed0bff852:/usr/local/tomcat# exit
    exit
    
    # 执行docker commit 提交生成新的tomcat镜像
    [root@192 ~]# docker commit -m="add webapps App" -a="sunwukong" d60ed0bff852 tomcat123:1.0
    sha256:e42c33552c6c3df7587f254803a0c1b4a686ff78d9f5e28aed0a94a3c91b22a4
    [root@192 ~]# 
    
    # 查看本地Docker镜像
    [root@192 ~]# docker images
    REPOSITORY            TAG       IMAGE ID       CREATED              SIZE
    tomcat123             1.0       e42c33552c6c   About a minute ago   653MB
    tomcat                9.0       040bdb29ab37   2 months ago         649MB
    centos                latest    300e315adb2f   3 months ago         209MB
    

    我们可以看到本地Docker镜像多可以一个tomcat123镜像,且是1.0版本。

    也可以发现tomcat123镜像的大小为653MB,比原先的tomcat镜像649MB多了几兆。

    提示:

    docker commit -m="add webapps App" -a="sunwukong" d60ed0bff852 tomcat123:1.0

    命令的最后tomcat123:1.0为自定义的镜像名和版本,也可以在前面加入Namespace的,也就如abc/tomcat123:1.0,这个abc就叫Namespace,就相当与Java中,类前面的包名。我们拉取镜像的时候也经常会看到一些这样命名的包,如用到过的portainer/portainer工具。

    关于Namespace命名空间,以后会详细讲解。

    步骤6:启动自定义的Tomcat镜像

    执行命令:docker run -it -p 8888:8080 tomcat123:1.0

    这里提示一下,如果需要让外部访问容器的服务,一定要进行端口映射。

    直接在外部浏览器中访问,如下:


    可以直接显示Tomcat服务的欢迎界面。

    到了这里才算是入门Dokcer!

    相关文章

      网友评论

        本文标题:【现学现忘Docker基础】— 20.Docker镜像commi

        本文链接:https://www.haomeiwen.com/subject/jynucltx.html