Docker(六)镜像的commit、push操作

目录

docker commit:

docker push

1、制作镜像

2、给镜像打tag

3、推送


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 tomcat
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              690cb3b9c7d1        7 days ago          463MB
[root@t-docker chenzx]# docker run -it -p 8888:8080 tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /docker-java-home/jre
30-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 ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
5c83a1f3aea4        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 ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
54a817e3ce05        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 ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
54a817e3ce05        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/bash
root@54a817e3ce05:/usr/local/tomcat# cd webapps/
root@54a817e3ce05:/usr/local/tomcat/webapps# ls -l
total 4
drwxr-x---  3 root root  306 Aug 23 00:47 ROOT
drwxr-x--- 14 root root 4096 Aug 23 00:47 docs
drwxr-x---  6 root root   83 Aug 23 00:47 examples
drwxr-x---  5 root root   87 Aug 23 00:47 host-manager
drwxr-x---  5 root root  103 Aug 23 00:47 manager
root@54a817e3ce05:/usr/local/tomcat/webapps# rm -rf docs/
root@54a817e3ce05:/usr/local/tomcat/webapps# ls -l
total 0
drwxr-x--- 3 root root 306 Aug 23 00:47 ROOT
drwxr-x--- 6 root root  83 Aug 23 00:47 examples
drwxr-x--- 5 root root  87 Aug 23 00:47 host-manager
drwxr-x--- 5 root root 103 Aug 23 00:47 manager

这个时候在浏览器输入 local host:32768/docs/ 会出现404-not found

3、通过上一步,当前的Tomcat运行实例是一个没有文档内容doc目录的容器,以它为模板commit一个没有doc的tomcat新镜像chenzx/tomcat02,chenzx就是自己取的命名空间

[root@t-docker chenzx]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
54a817e3ce05        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.2
sha256:24c3d89d4d043e4fb97f0cf4f3b94bcf96b5600a062fc8de4e39a7763d20badf
[root@t-docker chenzx]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
chenzx/tomcat02     1.2                 24c3d89d4d04        7 seconds ago       463MB
tomcat              latest              690cb3b9c7d1        7 days ago          463MB

4、把正在运行的容器全部删除

[root@t-docker chenzx]# docker rm -f $(docker ps -q)
54a817e3ce05
[root@t-docker chenzx]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

5、以我们自定义的镜像生成一个新的容器

TAG默认是latest,如果有TAG一定要写上

[root@t-docker chenzx]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
chenzx/tomcat02     1.2                 24c3d89d4d04        6 minutes ago       463MB
tomcat              latest              690cb3b9c7d1        7 days ago          463MB
centos              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 ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                     NAMES
c6c68b224e84        chenzx/tomcat02:1.2   "catalina.sh run"   24 seconds ago      Up 24 seconds       0.0.0.0:32770->8080/tcp   awesome_sammet

这个时候在浏览器输入 local host:32770/docs/ 可以看到,我们用自定义的tomcat1.2镜像,生成的容器里面没有doc目录

6、启动我们的新镜像并和原来的镜像对比

    启动chenzx/tomcat1.2,它没有docs目录

docker run -it -P tomcat

    启动原来tomcat,它有docs目录

7、以守护式方式启动tomcat容器(-d参数)

[root@t-docker chenzx]# docker run -d -p 6666:8080 tomcat
23b4ec6f24b854f682631c5a9b6bcfc0c685dbec46d1867faea4b534f5791452
[root@t-docker chenzx]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
23b4ec6f24b8        tomcat              "catalina.sh run"   5 seconds ago       Up 4 seconds        0.0.0.0:6666->8080/tcp   flamboyant_almeida

local host:6666正常访问

docker push

docker push : 将本地的镜像上传到镜像仓库(要先登陆到镜像仓库)

1、制作镜像

2、给镜像打tag

在上传之前,先给本地镜像打个tag标签,相当于重新复制镜像并重命名为 docker账户名/仓库名称(或其他指定的名称)

docker tag 2e25d8496557 xxxxx.com/abc-dev/arc:1334    
或    
docker tag arc:1334 xxxxx.com/abc-dev/arc:1334


tag arc:1334:本地镜像,IMAGE ID为 2e25d8496557,可以用docker images 查看

xxxxx.com:私有hub域名

abc-dev:项目名称
  
arc:镜像名称

1334:镜像版本号

3、推送

  docker push xxxxx.com/abc-dev/arc:1334

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值