创建镜像的两种方式
-
commit
从容器创建一个新的镜像 -
Dockerfile
就是用来构建docker
镜像的构建文件 查看连接
docker commit 提交容器成为一个新的副本
# 命令和git原理类似
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[版本TAG]
以
tomcat
为例,实战测试
- 启动一个默认的
tomcat
[root@VM-0-6-centos ~]# docker run -itd -p 8086:8080 --name tomcat02 tomcat
cb49370e67688c30baacc30e863ba701f0c2e9947cdb98e789adbe1d23f0f99c
- 发现这个默认的
tomcat
是没有webapps
应用,官方的镜像默认webapps
下面是没有文件的!
- 进入容器,从webapps.dist把拷贝文件进去webapp
docker exec -it 容器id /bin/bash
[root@VM-0-6-centos ~]# docker exec -it cb49370e6768 /bin/bash // 进入容器
root@cb49370e6768:/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@cb49370e6768:/usr/local/tomcat# cp -r webapps.dist/* webapps // 拷贝文件
root@cb49370e6768:/usr/local/tomcat# cd webapps
root@cb49370e6768:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
-
查看浏览器,运行正常
- 将操作过的容器通过
commit
为一个镜像!我们以后就使用我们修改过的镜像即可,而不需要每次都重新拷贝webapps.dist
下的文件到webapps
了,这就是我们自己的一个修改的镜像。
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG]
[root@VM-0-6-centos ~]# docker commit -m="add webapps" -a="yj" cb49370e6768 tomcat-web
sha256:2405d360dd7c53e7859338443ce661fa9ca65b17e3d3bb37cfc0b355c2c119dc
[root@VM-0-6-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat-web latest 2405d360dd7c 15 seconds ago 672MB // 新的镜像
tomcat latest 5505f7218e4d 4 days ago 667MB
- 如果你想要保存当前容器的状态,就可以通过
commit
来提交,获得一个镜像,就好比我们我们使用虚拟机的快照。