docker中镜像的commit怎么用
这篇文章将为大家详细讲解有关docker中镜像的commit怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
docker commit:表示提交容器副本使之成为一个新的镜像。假设我们在docker中运行了一个Tomcat容器,我们在tomcat容器中做了一些我们自定义的修改,然后我们这个修改的tomcat容器进行commit,这样我们就形成了一个新的自定义镜像。
命令格式:docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]
案例演示
1、从hub上下载tomcat镜像到本地并成功运行
说明:-p是指定端口,-P是随机端口
[root@t-docker chenzx]# docker images tomcatREPOSITORY TAG IMAGE ID CREATED SIZEtomcat latest 690cb3b9c7d1 7 days ago 463MB[root@t-docker chenzx]# docker run -it -p 8888:8080 tomcatUsing CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /docker-java-home/jre30-Aug-2018 08:37:01.728 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]30-Aug-2018 08:37:01.736 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]30-Aug-2018 08:37:01.739 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 555 ms[root@t-docker chenzx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES5c83a1f3aea4 tomcat "catalina.sh run" 8 minutes ago Up 8 minutes 0.0.0.0:8888->8080/tcp quirky_zhukovsky
[root@t-docker chenzx]# docker run -it -P tomcat[root@t-docker chenzx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES54a817e3ce05 tomcat "catalina.sh run" 21 seconds ago Up 19 seconds 0.0.0.0:32768->8080/tcp confident_leavitt
2、故意删除上一步镜像生成的tomcat容器文档
[root@t-docker chenzx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES54a817e3ce05 tomcat "catalina.sh run" 17 minutes ago Up 17 minutes 0.0.0.0:32768->8080/tcp confident_leavitt[root@t-docker chenzx]# docker exec -it 54a817e3ce05 /bin/bashroot@54a817e3ce05:/usr/local/tomcat# cd webapps/root@54a817e3ce05:/usr/local/tomcat/webapps# ls -ltotal 4drwxr-x--- 3 root root 306 Aug 23 00:47 ROOTdrwxr-x--- 14 root root 4096 Aug 23 00:47 docsdrwxr-x--- 6 root root 83 Aug 23 00:47 examplesdrwxr-x--- 5 root root 87 Aug 23 00:47 host-managerdrwxr-x--- 5 root root 103 Aug 23 00:47 managerroot@54a817e3ce05:/usr/local/tomcat/webapps# rm -rf docs/root@54a817e3ce05:/usr/local/tomcat/webapps# ls -ltotal 0drwxr-x--- 3 root root 306 Aug 23 00:47 ROOTdrwxr-x--- 6 root root 83 Aug 23 00:47 examplesdrwxr-x--- 5 root root 87 Aug 23 00:47 host-managerdrwxr-x--- 5 root root 103 Aug 23 00:47 manager
3、通过上一步,当前的Tomcat运行实例是一个没有文档内容doc目录的容器,以它为模板commit一个没有doc的tomcat新镜像chenzx/tomcat02,chenzx就是自己取的命名空间
[root@t-docker chenzx]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES54a817e3ce05 tomcat "catalina.sh run" 26 minutes ago Up 26 minutes 0.0.0.0:32768->8080/tcp confident_leavitt[root@t-docker chenzx]# docker commit -a='xiaoxin' -m='del tomcat docs' 54a817e3ce05 chenzx/tomcat02:1.2sha256:24c3d89d4d043e4fb97f0cf4f3b94bcf96b5600a062fc8de4e39a7763d20badf[root@t-docker chenzx]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEchenzx/tomcat02 1.2 24c3d89d4d04 7 seconds ago 463MBtomcat latest 690cb3b9c7d1 7 days ago 463MB
4、把正在运行的容器全部删除
[root@t-docker chenzx]# docker rm -f $(docker ps -q)54a817e3ce05[root@t-docker chenzx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5、以我们自定义的镜像生成一个新的容器
[root@t-docker chenzx]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEchenzx/tomcat02 1.2 24c3d89d4d04 6 minutes ago 463MBtomcat latest 690cb3b9c7d1 7 days ago 463MBcentos latest 5182e96772bf 3 weeks ago 200MB[root@t-docker chenzx]# [root@t-docker chenzx]# docker run -it -P chenzx/tomcat02:1.2 [root@t-docker chenzx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESc6c68b224e84 chenzx/tomcat02:1.2 "catalina.sh run" 24 seconds ago Up 24 seconds 0.0.0.0:32770->8080/tcp awesome_sammet
可以看到,我们用自定义的jtomcat1.2镜像,生成的容器里面没有doc目录
6、启动我们的新镜像并和原来的镜像对比
启动chenzx/tomcat1.2,它没有docs目录
启动原来tomcat。它有docs目录
7、以守护式方式启动tomcat容器(-d参数)
[root@t-docker chenzx]# docker run -d -p 6666:8080 tomcat23b4ec6f24b854f682631c5a9b6bcfc0c685dbec46d1867faea4b534f5791452[root@t-docker chenzx]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES23b4ec6f24b8 tomcat "catalina.sh run" 5 seconds ago Up 4 seconds 0.0.0.0:6666->8080/tcp flamboyant_almeida
关于“docker中镜像的commit怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341