Commit一个镜像
命令:
docker commit #提交容器,成为一个新的副本
具体指令:
docker commit –m=”提交的描述信息” –a=”作者” 容器id 目标镜像名:[TAG]# 其中TAG即为目标镜像的版本信息,如MySQL9.2中的9.2即为TAG
下面做一个实验
-it方式运行tomcat镜像,创建一个默认的tomcat容器:
ctrl+p+q方式退出容器,并使用docker ps指令查看tomcat容器运行情况
通过docker exec指令进入tomcat容器,这时的tomcat容器中的webapps目录下为空,因为这里官方tomcat默认镜像webapps下面是没有文件的
将webapps.dist下的文件拷贝入webapps目录(在原来默认的tomcat镜像上面做了操作,相当于在原来默认的tomcat镜像层上面加了一个容器层)
通过浏览器中输入ip+8080端口,访问docker中部署的tomcat容器,发现访问成功(这里的ip地址变了一下,是因为我换了个网络环境,没什么影响)
如果想要把现在已经配置好的tomcat容器作为一个现成的镜像,以备以后使用(相当于把刚才的基本的默认的tomcat镜像层+容器层一起打包成一个新的层级),那么就用到了commit指令。
输入指令:
docker commit -a="jack" -m="cp webapps.dist to webapps" 6d4ffd036a11 tomcat_jack:1.0
这个命令的意思为:把现在正在运行的tomcat容器,commit为一个新的镜像,镜像作者为jack,这个镜像生成的相关信息为“cp webapps.dist to webapps”,这个新的镜像的名字被我命名为tomcat_jack,版本为1.0。
通过docker images查看,发现已经生成我们刚才commit的新的镜像(可以观察到新镜像的SIZE比之前的精简版要大一些)
以后可以直接使用我们新生成的镜像tomcat_jack
更加直观的理解:
相当于用积木搭房子,我们从官网pull的默认镜像(默认镜像层)一般都是精简版,相当于我们房子的地基;我们通过run指令通过这个默认镜像运行某个容器,也就是在这个默认镜像层上面加了容器层,相当于我们在房子的地基上又加了几层;最终,我们通过commit指令生成一个新的镜像,相当于我们用胶水把现在积木的“地基”和“地基上的那几层”粘合了起来,形成了一个新的“地基”。这是我对分层思想的直观理解。
也可以和虚拟机VM中“快照”的概念相类比进行理解记忆。
到此为止,我们docker算是入门了,之后将会学到更加高级的东西:
容器的数据卷、DockerFile、Docker的网络