1. docker commit提交容器副本使之成为一个新的镜像。
命令如下:
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
例子:
- 先运行一个tomcat容器。并且把容器的8080端口映射到宿主机的8787端口。
docker run -it -p 8787:8080 tomcat
通过docker ps可以看到容器已经运行,并且端口被映射到8787。如果上面的命令使用大写-P替换-p 8787:8080,会把容器的8080端口映射到宿主机的随机端口上。
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c71b3ab24a3 tomcat "catalina.sh run" 3 minutes ago Up 2 minutes 0.0.0.0:8787->8080/tcp mystifying_elgamal
这时候访问localhost:8787可以访问到tomcat,点击“DOCUMENTATION”可以访问到tomcat的文档。
- 改变tomcat容器内容。
进入tomcat容器,删除webapps/docs文件夹。进入容器命令如下:
docker exec -it 8c71b3ab24a3 /bin/bash
删除webapps/docs之后,再访问localhost:8787/docs就报404错误,看不到文档了。
- 改变后的容器提交为新的image。命令如下:
docker commit -a="wk" -m="deleted tomcat docs" 8c71b3ab24a3 wk/tomcat01:1.0
上面的命令把容器8c71b3ab24a3 打包成新的镜像,镜像名是wk/tomcat01,版本TAG是1.0。使用docker images可以查看到刚刚打包的镜像。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wk/tomcat01 1.0 7bce65f9e928 6 seconds ago 463MB
<none> <none> 159d1556e7bf 34 seconds ago 463MB
<none> <none> c49bfd235cf4 About a minute ago 463MB
tomcat latest dd6ff929584a 6 days ago 463MB
centos latest 1e1148e4cc2c 3 months ago 202MB
- 启动刚打包的镜像wk/tomcat01。访问tomcat的文档。
[root@localhost ~]# docker run -d -p 9999:8080 7bce65f9e928
31917b93c8111442d02be7a1fb12a2e2139e074b092c513b7ca1d7c1dc89413c
上面是用-d参数,以后台进程启动的。这里是一样的效果。
这个时候访问 localhost:9999/docs 也是访问不到tomcat文档的。证明打包新的image成功。因为以新的image运行的容器都没有文档。