docker之commit镜像

本文介绍了如何通过Docker的commit命令对已有的镜像进行修改,如在Tomcat镜像中添加文件,然后创建一个新的镜像。通过提交作者、提交说明以及容器ID等参数,可以方便地保存对容器的改动,并生成新的镜像,简化了多容器部署时的重复配置工作。
摘要由CSDN通过智能技术生成

需求:

使用镜像的过程中,每次都是pull别人的镜像,而有时候pull的镜像会缺少工具或者需要自己对文件进行配置,如果一次性需要部署相同的多个容器,每一个都需要进行一次配置会显得很繁琐。我们能不能以pull的镜像做基础修改后打包成新的镜像呢? 答案是肯定的,docker的commit命令就是完成这样的需求。

语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

参数

options作用
-a提交镜像的作者
-c使用 Dockerfile 指令来创建镜像
-m提交时的说明文字
-pcommit 时,将容器暂停

以tomcat为例子:

启动一个tomcat

[root@localhost ~]# docker run -d -P --name tomcat01 tomcat
9650e40905f78220a14c29d7a41b38972a5cf2271b8fe057582bfcc984dceaee
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE                 COMMAND             CREATED         STATUS          PORTS                                         NAMES
9650e40905f7   tomcat                "catalina.sh run"   9 seconds ago   Up 6 seconds    0.0.0.0:49153->8080/tcp, :::49153->8080/tcp   tomcat01

进入到tomcat容器,webapps里面没有文件,文件在webapps.dist,每次部署一次就需要将webapps.dist里的文件拷贝一次到webapps

root@9650e40905f7:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@9650e40905f7:/usr/local/tomcat# ls webapps
root@9650e40905f7:/usr/local/tomcat# ls webapps.dist/
ROOT  docs  examples  host-manager  manager

现在我们拷贝一次,然后用commit从新打包一个镜像
docker commit -a “jj” -m “tomcat-test” 9650e40905f7 tomcat:test
解析:
-a参数提交作者
-m参数描述信息
9650e40905f7 以这个容器为基础
tomcat:test 新的镜像名和tag

root@9650e40905f7:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@9650e40905f7:/usr/local/tomcat# ls webapps
ROOT  docs  examples  host-manager  manager
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE                 COMMAND             CREATED          STATUS          PORTS                                         NAMES
9650e40905f7   tomcat                "catalina.sh run"   19 minutes ago   Up 16 minutes   0.0.0.0:49154->8080/tcp, :::49154->8080/tcp   tomcat01
[root@localhost ~]# docker commit  -a "jj" -m "tomcat-test" 9650e40905f7  tomcat:test
sha256:f69dde4344f1bdb5ba250acaa677785b20bbd5b837defa7d8d91305ceef82341
[root@localhost ~]# docker images 
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
tomcat                test      f69dde4344f1   8 minutes ago   684MB

现在我们以新的镜像来运行一个容器,然后进入容器可以看到webapps目录下是有文件的

[root@localhost ~]# docker run -d -P tomcat:test 
c866e6314162528776616435c9c03671ef8adf408aa512a28b56e6759e80ae9f
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE                 COMMAND             CREATED          STATUS          PORTS                                         NAMES
c866e6314162   tomcat:test           "catalina.sh run"   6 seconds ago    Up 4 seconds    0.0.0.0:49155->8080/tcp, :::49155->8080/tcp   admiring_vaughan
root@c866e6314162:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@c866e6314162:/usr/local/tomcat# ls webapps
ROOT  docs  examples  host-manager  manager

可以直接访问
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值