docker commit命令的具体使用

 更新时间:2023年06月27日 09:10:40   作者:思诚代码块  
本文主要介绍了docker commit命令的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

docker commit 命令 : 用于将一个镜像进行提交成一个新的副本

命令格式:

docker   commit -m="描述信息" -a="作者" 容器id 目标镜像名: [TAG]

做个实例:

查看本地镜像

[root@localhost ~]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    605c77e624dd   2 months ago   141MB
tomcat        9.0       b8e65a4d736d   2 months ago   680MB
tomcat        latest    fb5657adc892   2 months ago   680MB
mysql         latest    3218b38490ce   2 months ago   516MB
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB
centos        latest    5d0da3dc9764   5 months ago   231MB

我们之前的Tomcat服务器的部署是使用的最新的latest

我们就使用Tomcat 9.0 来做这个

这是它的前台运行结果

做一个端口映射:

[root@localhost ~]# docker run -it -p 8080:8080 tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/openjdk-11
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
07-Mar-2022 10:59:56.387 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/10.0.14
07-Mar-2022 10:59:56.390 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Dec 2 2021 22:01:36 UTC
07-Mar-2022 10:59:56.390 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.0.14.0
07-Mar-2022 10:59:56.391 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
07-Mar-2022 10:59:56.392 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            3.10.0-862.el7.x86_64
07-Mar-2022 10:59:56.392 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
07-Mar-2022 10:59:56.392 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/local/openjdk-11
07-Mar-2022 10:59:56.392 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.13+8

在前台运行的同时,我们来查看一下正在运行的容器

[root@localhost ~]# docker  ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                       NAMES
5e73948b0078   tomcat         "catalina.sh run"        5 minutes ago   Up 5 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   happy_feistel
155ead9f80cc   tomcat         "catalina.sh run"        5 hours ago     Up 5 hours     0.0.0.0:3355->8080/tcp, :::3355->8080/tcp   tomcat01
2257878e8b61   nginx          "/docker-entrypoint.…"   6 hours ago     Up 5 hours     0.0.0.0:443->80/tcp, :::443->80/tcp         nginx01
6d6fa6a4c6d7   5d0da3dc9764   "/bin/bash"              6 hours ago     Up 6 hours                                                 nice_panini
[root@localhost ~]# 

这个时候,使用浏览器来访问一下Tomcat

这结果是正常的,这是因为镜像原本就不完整

在这样的情况下,如果终止掉前台的进程

这个时候,浏览器的访问就会报错:

如果想要在终止前台进程的同时,想让浏览器的访问不报错

就要这样做:

[root@localhost ~]# docker run -d -p 8080:8080 --name tomcat04 tomcat:9.0 
c9a2f98234c79d94e0ccc67b5a529eace1ec1d2211b1b7088a16a45c62134ae8
[root@localhost ~]# 

浏览器再次访问

恢复正常

我们接下来解决一下镜像不完整而导致的问题

进容器

 [root@localhost ~]# docker exec -it  b7d37ccaadf0     /bin/bash 
root@b7d37ccaadf0:/usr/local/tomcat# b7d37ccaadf0  

这样复制一下文件到指定文件中

root@c9a2f98234c7:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@c9a2f98234c7:/usr/local/tomcat# cd webapps
root@c9a2f98234c7:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
root@c9a2f98234c7:/usr/local/tomcat/webapps# 

浏览器上测试:

这就好了

接下来,我们要进行一些操作

使得我们修改后的镜像提交成一个新的副本

下次我们直接使用它

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                       NAMES
c9a2f98234c7   tomcat:9.0     "catalina.sh run"        17 minutes ago   Up 17 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat04
155ead9f80cc   tomcat         "catalina.sh run"        6 hours ago      Up 6 hours      0.0.0.0:3355->8080/tcp, :::3355->8080/tcp   tomcat01
2257878e8b61   nginx          "/docker-entrypoint.…"   6 hours ago      Up 6 hours      0.0.0.0:443->80/tcp, :::443->80/tcp         nginx01
6d6fa6a4c6d7   5d0da3dc9764   "/bin/bash"              7 hours ago      Up 7 hours                                                  nice_panini

将我们原先经过处理的镜像打成一个新的包,变成一个新的整体

[root@localhost ~]# docker commit -a="shuaige" -m "add a web app" c9a2f98234c7 tomcat04:1.0 
sha256:12b32b1a124d5c1a3572fd0d02542c254192e415aa49045390f15a9a811f0153
[root@localhost ~]# 

查看镜像:(看Tomcat04 的那个镜像,比原先的9.0 Tomcat 镜像要大)

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
tomcat04      1.0       12b32b1a124d   2 minutes ago   685MB
nginx         latest    605c77e624dd   2 months ago    141MB
tomcat        9.0       b8e65a4d736d   2 months ago    680MB
tomcat        latest    fb5657adc892   2 months ago    680MB
mysql         latest    3218b38490ce   2 months ago    516MB
hello-world   latest    feb5d9fea6a5   5 months ago    13.3kB
centos        latest    5d0da3dc9764   5 months ago    231MB

现在他就是一个新的镜像了,下次可以直接使用

到此这篇关于docker commit命令的具体使用的文章就介绍到这了,更多相关docker commit 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker consul的容器服务更新与发现的问题小结

    Docker consul的容器服务更新与发现的问题小结

    这篇文章主要介绍了Docker consul的容器服务更新与发现,讲解了服务注册与发现的基本概念讲解,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • 在Docker中跑Hadoop与镜像制作方法

    在Docker中跑Hadoop与镜像制作方法

    这篇文章主要介绍了在Docker中跑Hadoop与镜像制作方法,本文通过实例代码和截图的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Docker+selenium实现自动化健康报备的方法

    Docker+selenium实现自动化健康报备的方法

    这篇文章主要介绍了Docker+selenium实现自动化健康报备的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Docker命令行与守护进程的交互方法

    Docker命令行与守护进程的交互方法

    这篇文章主要介绍了Docker命令行与守护进程的交互方法的相关资料,需要的朋友可以参考下
    2017-06-06
  • Docker启动失败报错Failed to start Docker Application Container Engine的解决办法

    Docker启动失败报错Failed to start Docker Application Containe

    最近在启动Docker的时候发现了个错误,所以下面这篇文章主要给大家介绍了关于Docker启动失败报错Failed to start Docker Application Container Engine的解决办法,需要的朋友可以参考下
    2022-08-08
  • docker安装并运行rabbitmq的实例代码

    docker安装并运行rabbitmq的实例代码

    在本篇文章里小编给大家整理了关于docker安装并运行rabbitmq的实例代码以及相关知识点,需要的朋友们学习下。
    2019-10-10
  • docker容器的一些常见命令小结

    docker容器的一些常见命令小结

    Docker是目前最流行的容器化平台之一,它提供了一种轻量级的虚拟化解决方案,使得应用程序的部署和管理变得更加便捷和高效,这篇文章主要给大家总结介绍了关于docker容器的一些常见命令,需要的朋友可以参考下
    2024-01-01
  • Windows/Mac系统Docker方式安装Mysql(包含utf8)

    Windows/Mac系统Docker方式安装Mysql(包含utf8)

    本文主要介绍了Windows/Mac系统Docker方式安装Mysql(包含utf8),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Docker磁盘空间清理的方法实现

    Docker磁盘空间清理的方法实现

    在使用Docker的过程中,系统会逐渐积累一些无用的垃圾文件,占据宝贵的磁盘空间并影响系统性,本文主要介绍了Docker磁盘空间清理的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 详解Docker镜像的基本操作方法

    详解Docker镜像的基本操作方法

    这篇文章主要介绍了Docker镜像的基本操作方法,主要包括获取镜像和运行镜像的相关知识,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论