深入探讨container
对于上图的理解:
image其实是由一层一层的layer来组成的,最底层基于linux内核在上面加了一层一层的layer,从docker仓库pull的image是由Dockerfile来生成,这个image是只读的不可更改的,container是由images运行而来的,可以理解为container是在images层上又加了一层,只不过container层是可以进行读写的.
思考:类比java反编译,我们可以使用image得到container,那么我们能不能使用container得到image呢?
下面我们就来进行验证:
1.docker pull tomcat
拉取一个tomcat image
2.docker run -d --name my-tomcat -p 8082:8080 tomcat
运行tomcat container
3.docker exec -it my-tomcat /bin/bash
进入tomcat并查看tomcat目录
4.创建目录 my-home,退出tomcat
5.docker commit my-tomcat my-home-tomcat
将其生成一个新的image,命名为my-home-tomcat
6.docker run -d --name my-home-tomcat-01 -p 8083:8080 my-home-tomcat
基于my-home-tomcat这个image重新运行一个container
7.进入my-home-tomcat-01 container,并查看文件列表,发现是存在my-home目录的
结论:可以使用docker commit命令基于container来生成一个image,这时候可以对container来做一些定制化的操作,但是一般不
建议使用此方式生成image.
container的一些常见命令:
根据镜像创建容器: docker run -d --name -p 9090:8080 my-tomcat tomcat
查看运行中的container: docker ps
查看所有的container[包含退出的]: docker ps -a
删除container: docker rm containerid docker rm -f $(docker ps -a) 删除所有container
进入到一个container中: docker exec -it container bash
根据container生成image: docker commit my-tomcat my-home-tomcat
查看某个container的日志: docker logs container
查看容器资源使用情况: docker stats
查看容器详情信息: docker inspect container
停止/启动容器: docker stop/start container
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)